diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-06-30 19:06:20 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-06-30 19:06:20 +0300 |
commit | 7d48a342d66cc7664b008ff512bd00e740eb7629 (patch) | |
tree | 87bf9ee86dc1e15b47398669edea9af6dc6f3f9f | |
parent | 62fcf34a4178cd133bad00849387ebf9614758e5 (diff) | |
parent | bea62c5c1a5c98eacbe29e3d5b0b803f42c41f4b (diff) |
Merge branch 'master' into blender2.8
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index a6d045d74f7..334e4a70f9c 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -805,9 +805,8 @@ bool WM_operator_pystring_abbreviate(char *str, int str_len_max) /* return NULL if no match is found */ #if 0 -static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) +static const char *wm_context_member_from_ptr(bContext *C, PointerRNA *ptr) { - /* loop over all context items and do 2 checks * * - see if the pointer is in the context. @@ -821,13 +820,9 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert const char *member_found = NULL; const char *member_id = NULL; - char *prop_str = NULL; - char *ret = NULL; - - for (link = lb.first; link; link = link->next) { const char *identifier = link->data; - PointerRNA ctx_item_ptr = {{0}} // CTX_data_pointer_get(C, identifier); // XXX, this isnt working + PointerRNA ctx_item_ptr = {{0}}; // CTX_data_pointer_get(C, identifier); // XXX, this isnt working if (ctx_item_ptr.type == NULL) { continue; @@ -848,36 +843,27 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert } } } + BLI_freelistN(&lb); if (member_found) { - prop_str = RNA_path_property_py(ptr, prop, index); - if (prop_str) { - ret = BLI_sprintfN("bpy.context.%s.%s", member_found, prop_str); - MEM_freeN(prop_str); - } + return member_found; } else if (member_id) { - prop_str = RNA_path_struct_property_py(ptr, prop, index); - if (prop_str) { - ret = BLI_sprintfN("bpy.context.%s.%s", member_id, prop_str); - MEM_freeN(prop_str); - } + return member_id; + } + else { + return NULL; } - - BLI_freelistN(&lb); - - return ret; } + #else /* use hard coded checks for now */ -static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) + +static const char *wm_context_member_from_ptr(bContext *C, PointerRNA *ptr) { const char *member_id = NULL; - char *prop_str = NULL; - char *ret = NULL; - if (ptr->id.data) { #define CTX_TEST_PTR_ID(C, member, idptr) \ @@ -976,23 +962,29 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert default: break; } - - if (member_id) { - prop_str = RNA_path_struct_property_py(ptr, prop, index); - if (prop_str) { - ret = BLI_sprintfN("bpy.context.%s.%s", member_id, prop_str); - MEM_freeN(prop_str); - } - } #undef CTX_TEST_PTR_ID #undef CTX_TEST_PTR_ID_CAST #undef CTX_TEST_SPACE_TYPE } - return ret; + return member_id; } #endif +static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) +{ + const char *member_id = wm_context_member_from_ptr(C, ptr); + char *ret = NULL; + if (member_id != NULL) { + char *prop_str = RNA_path_struct_property_py(ptr, prop, index); + if (prop_str) { + ret = BLI_sprintfN("bpy.context.%s.%s", member_id, prop_str); + MEM_freeN(prop_str); + } + } + return ret; +} + char *WM_prop_pystring_assign(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) { char *lhs, *rhs, *ret; |