forked from bartvdbraak/blender
Fix T65397: Assigning shortcut to editor properties gives errors
This commit is contained in:
parent
382e7ce9ec
commit
acd98599ff
@ -80,10 +80,6 @@ rna_module_prop = StringProperty(
|
||||
|
||||
|
||||
def context_path_validate(context, data_path):
|
||||
# Silently ignore invalid data paths created by T65397.
|
||||
if "(null)" in data_path:
|
||||
return Ellipsis
|
||||
|
||||
try:
|
||||
value = eval("context.%s" % data_path) if data_path else Ellipsis
|
||||
except AttributeError as ex:
|
||||
|
@ -266,6 +266,7 @@ extern StructRNA RNA_FreestyleLineStyle;
|
||||
extern StructRNA RNA_FreestyleModuleSettings;
|
||||
extern StructRNA RNA_FreestyleSettings;
|
||||
extern StructRNA RNA_Function;
|
||||
extern StructRNA RNA_GPUFXSettings;
|
||||
extern StructRNA RNA_GPencilFrame;
|
||||
extern StructRNA RNA_GPencilInterpolateSettings;
|
||||
extern StructRNA RNA_GPencilLayer;
|
||||
@ -392,7 +393,6 @@ extern StructRNA RNA_Mesh;
|
||||
extern StructRNA RNA_MeshCacheModifier;
|
||||
extern StructRNA RNA_MeshColor;
|
||||
extern StructRNA RNA_MeshColorLayer;
|
||||
extern StructRNA RNA_MeshLoopColor;
|
||||
extern StructRNA RNA_MeshDeformModifier;
|
||||
extern StructRNA RNA_MeshEdge;
|
||||
extern StructRNA RNA_MeshFloatProperty;
|
||||
@ -400,6 +400,7 @@ extern StructRNA RNA_MeshFloatPropertyLayer;
|
||||
extern StructRNA RNA_MeshIntProperty;
|
||||
extern StructRNA RNA_MeshIntPropertyLayer;
|
||||
extern StructRNA RNA_MeshLoop;
|
||||
extern StructRNA RNA_MeshLoopColor;
|
||||
extern StructRNA RNA_MeshLoopColorLayer;
|
||||
extern StructRNA RNA_MeshLoopTriangle;
|
||||
extern StructRNA RNA_MeshPolygon;
|
||||
|
@ -306,6 +306,11 @@ bool rna_Action_actedit_assign_poll(PointerRNA *ptr, PointerRNA value)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *rna_DopeSheet_path(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return BLI_strdup("dopesheet");
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void rna_def_dopesheet(BlenderRNA *brna)
|
||||
@ -315,6 +320,7 @@ static void rna_def_dopesheet(BlenderRNA *brna)
|
||||
|
||||
srna = RNA_def_struct(brna, "DopeSheet", NULL);
|
||||
RNA_def_struct_sdna(srna, "bDopeSheet");
|
||||
RNA_def_struct_path_func(srna, "rna_DopeSheet_path");
|
||||
RNA_def_struct_ui_text(
|
||||
srna, "Dope Sheet", "Settings for filtering the channels shown in animation editors");
|
||||
|
||||
|
@ -2492,6 +2492,11 @@ static char *rna_UnitSettings_path(PointerRNA *UNUSED(ptr))
|
||||
return BLI_strdup("unit_settings");
|
||||
}
|
||||
|
||||
static char *rna_GPUFXSettings_path(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return BLI_strdup("fx_settings");
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/* Grease Pencil Interpolation tool settings */
|
||||
@ -4848,6 +4853,7 @@ static void rna_def_gpu_fx(BlenderRNA *brna)
|
||||
rna_def_gpu_ssao_fx(brna);
|
||||
|
||||
srna = RNA_def_struct(brna, "GPUFXSettings", NULL);
|
||||
RNA_def_struct_path_func(srna, "rna_GPUFXSettings_path");
|
||||
RNA_def_struct_ui_text(srna, "GPU FX Settings", "Settings for GPU based compositing");
|
||||
|
||||
prop = RNA_def_property(srna, "ssao", PROP_POINTER, PROP_NONE);
|
||||
|
@ -1274,6 +1274,11 @@ static char *rna_View3DOverlay_path(PointerRNA *UNUSED(ptr))
|
||||
|
||||
/* Space Image Editor */
|
||||
|
||||
static char *rna_SpaceUVEditor_path(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return BLI_strdup("uv_editor");
|
||||
}
|
||||
|
||||
static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr)
|
||||
{
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_SpaceUVEditor, ptr->data);
|
||||
@ -2182,6 +2187,11 @@ static void rna_SpaceClipEditor_view_type_update(Main *UNUSED(bmain),
|
||||
|
||||
/* File browser. */
|
||||
|
||||
static char *rna_FileSelectParams_path(PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
return BLI_strdup("params");
|
||||
}
|
||||
|
||||
int rna_FileSelectParams_filename_editable(struct PointerRNA *ptr, const char **r_info)
|
||||
{
|
||||
FileSelectParams *params = ptr->data;
|
||||
@ -2696,6 +2706,7 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
|
||||
srna = RNA_def_struct(brna, "SpaceUVEditor", NULL);
|
||||
RNA_def_struct_sdna(srna, "SpaceImage");
|
||||
RNA_def_struct_nested(brna, srna, "SpaceImageEditor");
|
||||
RNA_def_struct_path_func(srna, "rna_SpaceUVEditor_path");
|
||||
RNA_def_struct_ui_text(srna, "Space UV Editor", "UV editor data for the image editor space");
|
||||
|
||||
/* selection */
|
||||
@ -5325,6 +5336,7 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
|
||||
};
|
||||
|
||||
srna = RNA_def_struct(brna, "FileSelectParams", NULL);
|
||||
RNA_def_struct_path_func(srna, "rna_FileSelectParams_path");
|
||||
RNA_def_struct_ui_text(srna, "File Select Parameters", "File Select Parameters");
|
||||
|
||||
prop = RNA_def_property(srna, "title", PROP_STRING, PROP_NONE);
|
||||
|
@ -429,26 +429,16 @@ static const char *wm_context_member_from_ptr(bContext *C, const PointerRNA *ptr
|
||||
} \
|
||||
(void)0
|
||||
|
||||
# define CTX_TEST_PTR_DATA_TYPE(C, member, rna_type, rna_ptr, dataptr_cmp) \
|
||||
# define TEST_PTR_DATA_TYPE(member, rna_type, rna_ptr, dataptr_cmp) \
|
||||
{ \
|
||||
const char *ctx_member = member; \
|
||||
if (RNA_struct_is_a((ptr)->type, &(rna_type)) && (ptr)->data == (dataptr_cmp)) { \
|
||||
if (RNA_struct_is_a((rna_ptr)->type, &(rna_type)) && (rna_ptr)->data == (dataptr_cmp)) { \
|
||||
member_id = ctx_member; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
(void)0
|
||||
|
||||
# define CTX_TEST_SPACE_TYPE(space_data_type, member_full, dataptr_cmp) \
|
||||
{ \
|
||||
const char *ctx_member_full = member_full; \
|
||||
if (space_data->spacetype == space_data_type && ptr->data == dataptr_cmp) { \
|
||||
member_id = ctx_member_full; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
(void)0
|
||||
|
||||
switch (GS(ptr->owner_id->name)) {
|
||||
case ID_SCE: {
|
||||
CTX_TEST_PTR_ID(C, "scene", ptr->owner_id);
|
||||
@ -484,19 +474,52 @@ static const char *wm_context_member_from_ptr(bContext *C, const PointerRNA *ptr
|
||||
|
||||
SpaceLink *space_data = CTX_wm_space_data(C);
|
||||
|
||||
CTX_TEST_PTR_DATA_TYPE(C, "space_data", RNA_Space, ptr, space_data);
|
||||
CTX_TEST_PTR_DATA_TYPE(C, "space_data", RNA_View3DOverlay, ptr, space_data);
|
||||
CTX_TEST_PTR_DATA_TYPE(C, "space_data", RNA_View3DShading, ptr, space_data);
|
||||
CTX_TEST_PTR_DATA_TYPE(C, "area", RNA_Area, ptr, CTX_wm_area(C));
|
||||
CTX_TEST_PTR_DATA_TYPE(C, "region", RNA_Region, ptr, CTX_wm_region(C));
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_Space, ptr, space_data);
|
||||
TEST_PTR_DATA_TYPE("area", RNA_Area, ptr, CTX_wm_area(C));
|
||||
TEST_PTR_DATA_TYPE("region", RNA_Region, ptr, CTX_wm_region(C));
|
||||
|
||||
switch (space_data->spacetype) {
|
||||
case SPACE_VIEW3D: {
|
||||
const View3D *v3d = (View3D *)space_data;
|
||||
const View3DShading *shading = &v3d->shading;
|
||||
const GPUFXSettings *fx_settings = &v3d->fx_settings;
|
||||
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_View3DOverlay, ptr, v3d);
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_View3DShading, ptr, shading);
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_GPUFXSettings, ptr, fx_settings);
|
||||
break;
|
||||
}
|
||||
case SPACE_GRAPH: {
|
||||
const SpaceGraph *sipo = (SpaceGraph *)space_data;
|
||||
const bDopeSheet *ads = sipo->ads;
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_DopeSheet, ptr, ads);
|
||||
break;
|
||||
}
|
||||
case SPACE_FILE: {
|
||||
const SpaceFile *sfile = (SpaceFile *)space_data;
|
||||
const FileSelectParams *params = sfile->params;
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_FileSelectParams, ptr, params);
|
||||
break;
|
||||
}
|
||||
case SPACE_IMAGE: {
|
||||
const SpaceImage *sima = (SpaceImage *)space_data;
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_SpaceUVEditor, ptr, sima);
|
||||
break;
|
||||
}
|
||||
case SPACE_NLA: {
|
||||
const SpaceNla *snla = (SpaceNla *)space_data;
|
||||
const bDopeSheet *ads = snla->ads;
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_DopeSheet, ptr, ads);
|
||||
break;
|
||||
}
|
||||
case SPACE_ACTION: {
|
||||
const SpaceAction *sact = (SpaceAction *)space_data;
|
||||
const bDopeSheet *ads = &sact->ads;
|
||||
TEST_PTR_DATA_TYPE("space_data", RNA_DopeSheet, ptr, ads);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CTX_TEST_SPACE_TYPE(SPACE_IMAGE, "space_data.uv_editor", space_data);
|
||||
CTX_TEST_SPACE_TYPE(
|
||||
SPACE_VIEW3D, "space_data.fx_settings", &(CTX_wm_view3d(C)->fx_settings));
|
||||
CTX_TEST_SPACE_TYPE(SPACE_NLA, "space_data.dopesheet", CTX_wm_space_nla(C)->ads);
|
||||
CTX_TEST_SPACE_TYPE(SPACE_GRAPH, "space_data.dopesheet", CTX_wm_space_graph(C)->ads);
|
||||
CTX_TEST_SPACE_TYPE(SPACE_ACTION, "space_data.dopesheet", &(CTX_wm_space_action(C)->ads));
|
||||
CTX_TEST_SPACE_TYPE(SPACE_FILE, "space_data.params", CTX_wm_space_file(C)->params);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -504,7 +527,7 @@ static const char *wm_context_member_from_ptr(bContext *C, const PointerRNA *ptr
|
||||
}
|
||||
# undef CTX_TEST_PTR_ID
|
||||
# undef CTX_TEST_PTR_ID_CAST
|
||||
# undef CTX_TEST_SPACE_TYPE
|
||||
# undef TEST_PTR_DATA_TYPE
|
||||
}
|
||||
|
||||
return member_id;
|
||||
|
Loading…
Reference in New Issue
Block a user