[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