Cleanup: split out context member query
authorCampbell Barton <ideasman42@gmail.com>
Sat, 30 Jun 2018 16:05:01 +0000 (18:05 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 30 Jun 2018 16:05:01 +0000 (18:05 +0200)
source/blender/windowmanager/intern/wm_operators.c

index 7eeb2ce762edf2fafc55ed8b0fa3400d673e7ab0..ed2cb1134d861692a93a842d15e1dd20d54a682c 100644 (file)
@@ -742,9 +742,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.
@@ -758,13 +757,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;
@@ -785,36 +780,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) \
@@ -911,23 +897,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;