diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-06-03 04:46:20 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-06-03 04:46:20 +0400 |
commit | 2a195b78257efdbe4901ec2bdc9fc457b6a28934 (patch) | |
tree | 59a3d3cebc8f1dcc87ed266b080f5e9285da3a80 /source/blender | |
parent | 3ea4d7ff0136436f691bbe82b3ec4501bd7b3dcc (diff) |
fix [#35501] Operator log: some property changes log as [...].(null) = ...
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 10 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 17 |
2 files changed, 25 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index af5de0f469e..9bd4f105f53 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -4469,6 +4469,16 @@ char *RNA_path_struct_property_py(PointerRNA *ptr, PropertyRNA *prop, int index) data_path = RNA_path_from_ID_to_property(ptr, prop); + if (data_path == NULL) { + /* this may not be an ID at all, check for simple when pointer owns property. + * TODO, more complex nested case */ + if (!RNA_struct_is_ID(ptr->type)) { + if (RNA_struct_find_property(ptr, RNA_property_identifier(prop)) == prop) { + data_path = BLI_strdup(RNA_property_identifier(prop)); + } + } + } + if ((index == -1) || (RNA_property_array_check(prop) == FALSE)) { ret = BLI_sprintfN("%s", data_path); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index bb29ec9000f..423ddfcc568 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -648,7 +648,6 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert char *ret = NULL; if (ptr->id.data) { - ID *idptr = ptr->id.data; #define CTX_TEST_PTR_ID(C, member, idptr) \ { \ @@ -671,7 +670,16 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert } \ } (void)0 - switch (GS(idptr->name)) { +#define CTX_TEST_PTR_DATA_TYPE(C, 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)) { \ + member_id = ctx_member; \ + break; \ + } \ + } (void)0 + + switch (GS(((ID *)ptr->id.data)->name)) { case ID_SCE: { CTX_TEST_PTR_ID(C, "scene", ptr->id.data); @@ -707,6 +715,11 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert case ID_SCR: { CTX_TEST_PTR_ID(C, "screen", ptr->id.data); + + CTX_TEST_PTR_DATA_TYPE(C, "space_data", RNA_Space, ptr, CTX_wm_space_data(C)); + 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)); + break; } } |