[Bf-blender-cvs] [2e325fc10ae] temp-geometry-nodes-attribute-search: Cleanup, check for node tree type

Hans Goudey noreply at git.blender.org
Thu Feb 25 00:31:56 CET 2021


Commit: 2e325fc10ae95f7ab6384d85bdabbb0eb5463c58
Author: Hans Goudey
Date:   Wed Feb 24 16:01:46 2021 -0600
Branches: temp-geometry-nodes-attribute-search
https://developer.blender.org/rB2e325fc10ae95f7ab6384d85bdabbb0eb5463c58

Cleanup, check for node tree type

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

M	source/blender/editors/space_node/drawnode.c
M	source/blender/editors/space_node/node_geometry_attribute_search.cc
M	source/blender/editors/space_node/node_intern.h

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

diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index c1bc3588668..a4ffe626208 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -3390,25 +3390,16 @@ static void std_node_socket_draw(
       uiLayout *row = uiLayoutSplit(layout, 0.5f, false);
       uiItemL(row, text, 0);
 
-      uiBlock *block = uiLayoutGetBlock(row);
-      uiBut *but = uiDefIconTextButR(block,
-                                     UI_BTYPE_SEARCH_MENU,
-                                     0,
-                                     ICON_NONE,
-                                     "",
-                                     0,
-                                     0,
-                                     200,
-                                     UI_UNIT_Y,
-                                     ptr,
-                                     "default_value",
-                                     0,
-                                     0.0f,
-                                     0.0f,
-                                     0.0f,
-                                     0.0f,
-                                     "");
-      node_socket_button_add_attribute_search(C, node, sock, block, but);
+      SpaceNode *space_node = CTX_wm_space_node(C);
+      BLI_assert(space_node != NULL && space_node->edittree != NULL);
+      const bNodeTree *node_tree = space_node->edittree;
+      if (node_tree->type == NTREE_GEOMETRY) {
+        node_geometry_add_attribute_search_button(C, node_tree, node, ptr, row);
+      }
+      else {
+        uiItemR(row, ptr, "default_value", DEFAULT_FLAGS, "", 0);
+      }
+
       break;
     }
     case SOCK_OBJECT: {
diff --git a/source/blender/editors/space_node/node_geometry_attribute_search.cc b/source/blender/editors/space_node/node_geometry_attribute_search.cc
index d690aab137b..6289ed7be5c 100644
--- a/source/blender/editors/space_node/node_geometry_attribute_search.cc
+++ b/source/blender/editors/space_node/node_geometry_attribute_search.cc
@@ -43,7 +43,6 @@ using blender::StringRef;
 struct AttributeSearchData {
   const bNodeTree &node_tree;
   const bNode &node;
-  bNodeSocket &socket;
 
   /* Needed for proper interaction with the search button. Otherwise the interface code can't keep
    * track of which button is active by comparing pointers to this struct, because it is newly
@@ -94,23 +93,34 @@ static void attribute_search_free_fn(void *arg)
   delete data;
 }
 
-void node_socket_button_add_attribute_search(
-    const bContext *C, bNode *node, bNodeSocket *socket, uiBlock *block, uiBut *but)
+void node_geometry_add_attribute_search_button(const bContext *C,
+                                               const bNodeTree *node_tree,
+                                               bNode *node,
+                                               PointerRNA *socket_ptr,
+                                               uiLayout *layout)
 {
-  BLI_assert(socket->type == SOCK_STRING);
-
-  SpaceNode *space_node = CTX_wm_space_node(C);
-  if (space_node == nullptr) {
-    return;
-  }
-  if (space_node->edittree == nullptr) {
-    return;
-  }
+  uiBlock *block = uiLayoutGetBlock(layout);
+  uiBut *but = uiDefIconTextButR(block,
+                                 UI_BTYPE_SEARCH_MENU,
+                                 0,
+                                 ICON_NONE,
+                                 "",
+                                 0,
+                                 0,
+                                 200,
+                                 UI_UNIT_Y,
+                                 socket_ptr,
+                                 "default_value",
+                                 0,
+                                 0.0f,
+                                 0.0f,
+                                 0.0f,
+                                 0.0f,
+                                 "");
 
   AttributeSearchData *data = new AttributeSearchData{
-      *space_node->edittree,
+      *node_tree,
       *node,
-      *socket,
       but,
       UI_butstore_create(block),
       block,
diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h
index c3218509df4..403a65958d7 100644
--- a/source/blender/editors/space_node/node_intern.h
+++ b/source/blender/editors/space_node/node_intern.h
@@ -292,11 +292,11 @@ void NODE_OT_cryptomatte_layer_add(struct wmOperatorType *ot);
 void NODE_OT_cryptomatte_layer_remove(struct wmOperatorType *ot);
 
 /* node_geometry_attribute_search.cc */
-void node_socket_button_add_attribute_search(const struct bContext *C,
-                                             struct bNode *node,
-                                             struct bNodeSocket *socket,
-                                             struct uiBlock *block,
-                                             struct uiBut *but);
+void node_geometry_add_attribute_search_button(const struct bContext *C,
+                                               const struct bNodeTree *node_tree,
+                                               struct bNode *node,
+                                               struct PointerRNA *socket_ptr,
+                                               struct uiLayout *layout);
 
 extern const char *node_context_dir[];



More information about the Bf-blender-cvs mailing list