[Bf-blender-cvs] [190ef51fd58] temp-ui-button-type-refactor: Remove unnecessary `uiButSearchData` struct

Julian Eisel noreply at git.blender.org
Fri Jun 5 14:22:48 CEST 2020


Commit: 190ef51fd584e5c58f7ff1bba2dcb86db6da27be
Author: Julian Eisel
Date:   Fri Jun 5 14:18:46 2020 +0200
Branches: temp-ui-button-type-refactor
https://developer.blender.org/rB190ef51fd584e5c58f7ff1bba2dcb86db6da27be

Remove unnecessary `uiButSearchData` struct

This doesn't add anything useful if we already have a struct for search
buttons. At the very least it should not be allocated.

Also uses clearer names for `uiButSearch` members.

===================================================================

M	source/blender/editors/interface/interface.c
M	source/blender/editors/interface/interface_context_menu.c
M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/interface/interface_intern.h
M	source/blender/editors/interface/interface_ops.c
M	source/blender/editors/interface/interface_region_search.c

===================================================================

diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index a1b78e9e2af..8bc78535964 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -809,7 +809,9 @@ static bool ui_but_update_from_old_block(const bContext *C,
 
     if (oldbut->type == UI_BTYPE_SEARCH_MENU) {
       uiButSearch *search_oldbut = (uiButSearch *)oldbut, *search_but = (uiButSearch *)but;
-      SWAP(struct uiButSearchData *, search_oldbut->search, search_but->search);
+
+      SWAP(uiButSearchArgFreeFn, search_oldbut->arg_free_fn, search_but->arg_free_fn);
+      SWAP(void *, search_oldbut->arg, search_but->arg);
     }
 
     /* copy hardmin for list rows to prevent 'sticking' highlight to mouse position
@@ -3223,14 +3225,10 @@ static void ui_but_free_type_specific(uiBut *but)
     case UI_BTYPE_SEARCH_MENU: {
       uiButSearch *search_but = (uiButSearch *)but;
 
-      if (search_but->search != NULL) {
-        if (search_but->search->arg_free_fn) {
-          search_but->search->arg_free_fn(search_but->search->arg);
-          search_but->search->arg = NULL;
-        }
-        MEM_freeN(search_but->search);
+      if (search_but->arg_free_fn) {
+        search_but->arg_free_fn(search_but->arg);
+        search_but->arg = NULL;
       }
-
       break;
     }
     default:
@@ -6481,7 +6479,7 @@ void UI_but_func_search_set(uiBut *but,
                             uiButHandleFunc search_exec_fn,
                             void *active)
 {
-  uiButSearch *but_search = (uiButSearch *)but;
+  uiButSearch *search_but = (uiButSearch *)but;
 
   BLI_assert(but->type == UI_BTYPE_SEARCH_MENU);
 
@@ -6491,40 +6489,33 @@ void UI_but_func_search_set(uiBut *but,
     search_create_fn = ui_searchbox_create_generic;
   }
 
-  struct uiButSearchData *search = but_search->search;
-  if (search != NULL) {
-    if (search->arg_free_fn != NULL) {
-      search->arg_free_fn(but_search->search->arg);
-      search->arg = NULL;
-    }
-  }
-  else {
-    search = MEM_callocN(sizeof(*but_search->search), __func__);
-    but_search->search = search;
+  if (search_but->arg_free_fn != NULL) {
+    search_but->arg_free_fn(search_but->arg);
+    search_but->arg = NULL;
   }
 
-  search->create_fn = search_create_fn;
-  search->update_fn = search_update_fn;
+  search_but->popup_create_fn = search_create_fn;
+  search_but->items_update_fn = search_update_fn;
 
-  search->arg = arg;
-  search->arg_free_fn = search_arg_free_fn;
+  search_but->arg = arg;
+  search_but->arg_free_fn = search_arg_free_fn;
 
   if (search_exec_fn) {
 #ifdef DEBUG
-    if (but_search->but.func) {
+    if (search_but->but.func) {
       /* watch this, can be cause of much confusion, see: T47691 */
       printf("%s: warning, overwriting button callback with search function callback!\n",
              __func__);
     }
 #endif
-    UI_but_func_set(but, search_exec_fn, search->arg, active);
+    UI_but_func_set(but, search_exec_fn, search_but->arg, active);
   }
 
   /* search buttons show red-alert if item doesn't exist, not for menus */
   if (0 == (but->block->flag & UI_BLOCK_LOOP)) {
     /* skip empty buttons, not all buttons need input, we only show invalid */
     if (but->drawstr[0]) {
-      ui_but_search_refresh(but_search);
+      ui_but_search_refresh(search_but);
     }
   }
 }
@@ -6534,7 +6525,7 @@ void UI_but_func_search_set_context_menu(uiBut *but, uiButSearchContextMenuFn co
   uiButSearch *but_search = (uiButSearch *)but;
   BLI_assert(but->type == UI_BTYPE_SEARCH_MENU);
 
-  but_search->search->context_menu_fn = context_menu_fn;
+  but_search->item_context_menu_fn = context_menu_fn;
 }
 
 /**
@@ -6546,7 +6537,7 @@ void UI_but_func_search_set_sep_string(uiBut *but, const char *search_sep_string
   uiButSearch *but_search = (uiButSearch *)but;
   BLI_assert(but->type == UI_BTYPE_SEARCH_MENU);
 
-  but_search->search->sep_string = search_sep_string;
+  but_search->item_sep_string = search_sep_string;
 }
 
 void UI_but_func_search_set_tooltip(uiBut *but, uiButSearchTooltipFn tooltip_fn)
@@ -6554,7 +6545,7 @@ void UI_but_func_search_set_tooltip(uiBut *but, uiButSearchTooltipFn tooltip_fn)
   uiButSearch *but_search = (uiButSearch *)but;
   BLI_assert(but->type == UI_BTYPE_SEARCH_MENU);
 
-  but_search->search->tooltip_fn = tooltip_fn;
+  but_search->item_tooltip_fn = tooltip_fn;
 }
 
 /* Callbacks for operator search button. */
diff --git a/source/blender/editors/interface/interface_context_menu.c b/source/blender/editors/interface/interface_context_menu.c
index 00c5c5ea3ef..cdbd3c5b378 100644
--- a/source/blender/editors/interface/interface_context_menu.c
+++ b/source/blender/editors/interface/interface_context_menu.c
@@ -962,7 +962,7 @@ bool ui_popup_context_menu_for_button(bContext *C, uiBut *but)
     const PropertyType prop_type = RNA_property_type(but->rnaprop);
     if (((prop_type == PROP_POINTER) ||
          (prop_type == PROP_STRING && but->type == UI_BTYPE_SEARCH_MENU &&
-          ((uiButSearch *)but)->search->update_fn == ui_rna_collection_search_update_fn)) &&
+          ((uiButSearch *)but)->items_update_fn == ui_rna_collection_search_update_fn)) &&
         ui_jump_to_target_button_poll(C)) {
       uiItemO(layout,
               CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Jump to Target"),
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index ca1aff2256a..981a4bbeb94 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -758,10 +758,10 @@ static void ui_apply_but_func(bContext *C, uiBut *but)
 
     if (but->type == UI_BTYPE_SEARCH_MENU) {
       uiButSearch *search_but = (uiButSearch *)but;
-      after->search_arg_free_fn = search_but->search->arg_free_fn;
-      after->search_arg = search_but->search->arg;
-      search_but->search->arg_free_fn = NULL;
-      search_but->search->arg = NULL;
+      after->search_arg_free_fn = search_but->arg_free_fn;
+      after->search_arg = search_but->arg;
+      search_but->arg_free_fn = NULL;
+      search_but->arg = NULL;
     }
 
     if (but->context) {
@@ -3321,7 +3321,7 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data)
   if (but->type == UI_BTYPE_SEARCH_MENU) {
     uiButSearch *search_but = (uiButSearch *)but;
 
-    data->searchbox = search_but->search->create_fn(C, data->region, search_but);
+    data->searchbox = search_but->popup_create_fn(C, data->region, search_but);
     ui_searchbox_update(C, data->searchbox, but, true); /* true = reset */
   }
 
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 3cf0a43f512..45f68464eaf 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -147,17 +147,6 @@ enum {
 /* max amount of items a radial menu (pie menu) can contain */
 #define PIE_MAX_ITEMS 8
 
-struct uiButSearchData {
-  uiButSearchCreateFn create_fn;
-  uiButSearchUpdateFn update_fn;
-  void *arg;
-  uiButSearchArgFreeFn arg_free_fn;
-  uiButSearchContextMenuFn context_menu_fn;
-  uiButSearchTooltipFn tooltip_fn;
-
-  const char *sep_string;
-};
-
 struct uiBut {
   struct uiBut *next, *prev;
 
@@ -302,7 +291,14 @@ typedef struct uiButTab {
 typedef struct uiButSearch {
   uiBut but;
 
-  struct uiButSearchData *search;
+  uiButSearchCreateFn popup_create_fn;
+  uiButSearchUpdateFn items_update_fn;
+
+  void *arg;
+  uiButSearchArgFreeFn arg_free_fn;
+
+  uiButSearchContextMenuFn item_context_menu_fn;
+  uiButSearchTooltipFn item_tooltip_fn;
 
   const char *item_sep_string;
 
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
index 776c975fdcf..1f1be494586 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -1137,8 +1137,8 @@ static bool jump_to_target_button(bContext *C, bool poll)
       const uiButSearch *search_but = (but->type == UI_BTYPE_SEARCH_MENU) ? (uiButSearch *)but :
                                                                             NULL;
 
-      if (search_but && search_but->search && search_but->search->update_fn == ui_rna_collection_search_update_fn) {
-        uiRNACollectionSearch *coll_search = search_but->search->arg;
+      if (search_but && search_but->items_update_fn == ui_rna_collection_search_update_fn) {
+        uiRNACollectionSearch *coll_search = search_but->arg;
 
         char str_buf[MAXBONENAME];
         char *str_ptr = RNA_property_string_get_alloc(&ptr, prop, str_buf, sizeof(str_buf), NULL);
diff --git a/source/blender/editors/interface/interface_region_search.c b/source/blender/editors/interface/interface_region_search.c
index 6ee05a6d571..bcef932a216 100644
--- a/source/blender/editors/interface/interface_region_search.c
+++ b/source/blender/editors/interface/interface_region_search.c
@@ -312,8 +312,8 @@ static struct ARegion *wm_searchbox_tooltip_init(struct bContext *C,
       }
 
       uiButSearch *search_but = (uiButSearch *)but;
-      if (search_but->search && search_but->search->tooltip_fn) {
-        return search_but->search->tooltip_fn(C, region, search_but->search->arg, but->func_arg2);
+      if (search_but->item_tooltip_fn) {
+        return search_but->item_tooltip_fn(C, region, search_but->arg, but->func_arg2);
       }
     }
   }
@@ -348,7 +348,7 @@ bool ui_searchbox_event(
       break;
     case RIGHTMOUSE:
       if (val) {
-        if (search_but->search->context_menu_fn) {
+        if (search_but->item_context_menu_fn) {
           if (data->active != -1) {
             /* Check the cursor is over the active element
              * (a little confusing if this isn't the case, although it does work). */
@@ -358,7 +358,7 @@ bool ui_searchbox_event(
                     &rect, event->x - region->winrct.xmin, event->y - region->winrct.ymin)) {
 
               void *active = data->items.pointers[data->active];
-              if (search_but->search->context_menu_fn(C, search_but->search->arg, active, event)) {
+       

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list