Fix (unreported) broken Poll function of GPencile mods and ShaderFX operators in liboverride case.
Those where assuming we always get a valid modifier data from context, which is not always true... Also fix similar issue with shortcuts as reported in T79635.
This commit is contained in:
@@ -416,6 +416,7 @@ static int gpencil_edit_modifier_poll_generic(bContext *C, StructRNA *rna_type,
|
||||
{
|
||||
PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", rna_type);
|
||||
Object *ob = (ptr.owner_id) ? (Object *)ptr.owner_id : ED_object_active_context(C);
|
||||
GpencilModifierData *mod = ptr.data; /* May be NULL. */
|
||||
|
||||
if (!ob || ID_IS_LINKED(ob)) {
|
||||
return 0;
|
||||
@@ -428,9 +429,10 @@ static int gpencil_edit_modifier_poll_generic(bContext *C, StructRNA *rna_type,
|
||||
}
|
||||
|
||||
if (ID_IS_OVERRIDE_LIBRARY(ob)) {
|
||||
CTX_wm_operator_poll_msg_set(C, "Cannot edit modifiers coming from library override");
|
||||
return (((GpencilModifierData *)ptr.data)->flag &
|
||||
eGpencilModifierFlag_OverrideLibrary_Local) != 0;
|
||||
if ((mod == NULL) || (mod->flag & eGpencilModifierFlag_OverrideLibrary_Local) == 0) {
|
||||
CTX_wm_operator_poll_msg_set(C, "Cannot edit modifiers coming from library override");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -332,6 +332,7 @@ static bool edit_shaderfx_poll_generic(bContext *C, StructRNA *rna_type, int obt
|
||||
{
|
||||
PointerRNA ptr = CTX_data_pointer_get_type(C, "shaderfx", rna_type);
|
||||
Object *ob = (ptr.owner_id) ? (Object *)ptr.owner_id : ED_object_active_context(C);
|
||||
ShaderFxData *fx = ptr.data; /* May be NULL. */
|
||||
|
||||
if (!ob || ID_IS_LINKED(ob)) {
|
||||
return 0;
|
||||
@@ -344,8 +345,10 @@ static bool edit_shaderfx_poll_generic(bContext *C, StructRNA *rna_type, int obt
|
||||
}
|
||||
|
||||
if (ID_IS_OVERRIDE_LIBRARY(ob)) {
|
||||
CTX_wm_operator_poll_msg_set(C, "Cannot edit shaderfxs coming from library override");
|
||||
return (((ShaderFxData *)ptr.data)->flag & eShaderFxFlag_OverrideLibrary_Local) != 0;
|
||||
if ((fx == NULL) || (fx->flag & eShaderFxFlag_OverrideLibrary_Local) == 0) {
|
||||
CTX_wm_operator_poll_msg_set(C, "Cannot edit shaderfxs coming from library override");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user