[Bf-blender-cvs] [8bbf8237162] master: Cleanup: Simplify arguments to deselect all nodes function

Hans Goudey noreply at git.blender.org
Wed Dec 21 19:29:08 CET 2022


Commit: 8bbf823716214f2f3aeed1f0bfc6cf802ecb2edb
Author: Hans Goudey
Date:   Tue Dec 20 17:14:34 2022 -0600
Branches: master
https://developer.blender.org/rB8bbf823716214f2f3aeed1f0bfc6cf802ecb2edb

Cleanup: Simplify arguments to deselect all nodes function

Take the node tree as an argument directly instead of retrieving it from
the editor struct. Then use the utility function in two more places.

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

M	source/blender/editors/space_node/add_node_search.cc
M	source/blender/editors/space_node/link_drag_search.cc
M	source/blender/editors/space_node/node_add.cc
M	source/blender/editors/space_node/node_edit.cc
M	source/blender/editors/space_node/node_group.cc
M	source/blender/editors/space_node/node_intern.hh
M	source/blender/editors/space_node/node_relationships.cc
M	source/blender/editors/space_node/node_select.cc

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

diff --git a/source/blender/editors/space_node/add_node_search.cc b/source/blender/editors/space_node/add_node_search.cc
index ba060ab3925..78e52c82517 100644
--- a/source/blender/editors/space_node/add_node_search.cc
+++ b/source/blender/editors/space_node/add_node_search.cc
@@ -247,7 +247,7 @@ static void add_node_search_exec_fn(bContext *C, void *arg1, void *arg2)
     return;
   }
 
-  node_deselect_all(snode);
+  node_deselect_all(node_tree);
   bNode *new_node = nodeAddNode(C, &node_tree, item->identifier.c_str());
   BLI_assert(new_node != nullptr);
 
diff --git a/source/blender/editors/space_node/link_drag_search.cc b/source/blender/editors/space_node/link_drag_search.cc
index 8e156f409af..08d9f6ecc4f 100644
--- a/source/blender/editors/space_node/link_drag_search.cc
+++ b/source/blender/editors/space_node/link_drag_search.cc
@@ -349,17 +349,18 @@ static void link_drag_search_exec_fn(bContext *C, void *arg1, void *arg2)
 {
   Main &bmain = *CTX_data_main(C);
   SpaceNode &snode = *CTX_wm_space_node(C);
+  bNodeTree &node_tree = *snode.edittree;
   LinkDragSearchStorage &storage = *static_cast<LinkDragSearchStorage *>(arg1);
   SocketLinkOperation *item = static_cast<SocketLinkOperation *>(arg2);
   if (item == nullptr) {
     return;
   }
 
-  node_deselect_all(snode);
+  node_deselect_all(node_tree);
 
   Vector<bNode *> new_nodes;
   nodes::LinkSearchOpParams params{
-      *C, *snode.edittree, storage.from_node, storage.from_socket, new_nodes};
+      *C, node_tree, storage.from_node, storage.from_socket, new_nodes};
   item->fn(params);
   if (new_nodes.is_empty()) {
     return;
@@ -376,11 +377,11 @@ static void link_drag_search_exec_fn(bContext *C, void *arg1, void *arg2)
   }
 
   nodeSetSelected(new_node, true);
-  nodeSetActive(snode.edittree, new_node);
+  nodeSetActive(&node_tree, new_node);
 
   /* Ideally it would be possible to tag the node tree in some way so it updates only after the
    * translate operation is finished, but normally moving nodes around doesn't cause updates. */
-  ED_node_tree_propagate_change(C, &bmain, snode.edittree);
+  ED_node_tree_propagate_change(C, &bmain, &node_tree);
 
   /* Start translation operator with the new node. */
   wmOperatorType *ot = WM_operatortype_find("NODE_OT_translate_attach_remove_on_cancel", true);
diff --git a/source/blender/editors/space_node/node_add.cc b/source/blender/editors/space_node/node_add.cc
index 4bb550a553f..ce1fe118281 100644
--- a/source/blender/editors/space_node/node_add.cc
+++ b/source/blender/editors/space_node/node_add.cc
@@ -63,20 +63,21 @@ bNode *add_node(const bContext &C, const StringRef idname, const float2 &locatio
 {
   SpaceNode &snode = *CTX_wm_space_node(&C);
   Main &bmain = *CTX_data_main(&C);
+  bNodeTree &node_tree = *snode.edittree;
 
-  node_deselect_all(snode);
+  node_deselect_all(node_tree);
 
   const std::string idname_str = idname;
 
-  bNode *node = nodeAddNode(&C, snode.edittree, idname_str.c_str());
+  bNode *node = nodeAddNode(&C, &node_tree, idname_str.c_str());
   BLI_assert(node && node->typeinfo);
 
   position_node_based_on_mouse(*node, location);
 
   nodeSetSelected(node, true);
-  ED_node_set_active(&bmain, &snode, snode.edittree, node, nullptr);
+  ED_node_set_active(&bmain, &snode, &node_tree, node, nullptr);
 
-  ED_node_tree_propagate_change(&C, &bmain, snode.edittree);
+  ED_node_tree_propagate_change(&C, &bmain, &node_tree);
   return node;
 }
 
@@ -84,18 +85,19 @@ bNode *add_static_node(const bContext &C, int type, const float2 &location)
 {
   SpaceNode &snode = *CTX_wm_space_node(&C);
   Main &bmain = *CTX_data_main(&C);
+  bNodeTree &node_tree = *snode.edittree;
 
-  node_deselect_all(snode);
+  node_deselect_all(node_tree);
 
-  bNode *node = nodeAddStaticNode(&C, snode.edittree, type);
+  bNode *node = nodeAddStaticNode(&C, &node_tree, type);
   BLI_assert(node && node->typeinfo);
 
   position_node_based_on_mouse(*node, location);
 
   nodeSetSelected(node, true);
-  ED_node_set_active(&bmain, &snode, snode.edittree, node, nullptr);
+  ED_node_set_active(&bmain, &snode, &node_tree, node, nullptr);
 
-  ED_node_tree_propagate_change(&C, &bmain, snode.edittree);
+  ED_node_tree_propagate_change(&C, &bmain, &node_tree);
   return node;
 }
 
@@ -152,11 +154,12 @@ static int add_reroute_exec(bContext *C, wmOperator *op)
     return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH;
   }
 
+  node_deselect_all(ntree);
+
   ntree.ensure_topology_cache();
   const Vector<bNode *> frame_nodes = ntree.nodes_by_type("NodeFrame");
 
   ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
-  node_deselect_all(snode);
 
   /* All link "cuts" that start at a particular output socket. Deduplicating new reroutes per
    * output socket is useful because it allows reusing reroutes for connected intersections.
diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc
index 1bf5b938ee3..7fdc2db9fdb 100644
--- a/source/blender/editors/space_node/node_edit.cc
+++ b/source/blender/editors/space_node/node_edit.cc
@@ -2335,7 +2335,7 @@ static int node_clipboard_paste_exec(bContext *C, wmOperator *op)
   ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C));
 
   /* deselect old nodes */
-  node_deselect_all(*snode);
+  node_deselect_all(*ntree);
 
   /* calculate "barycenter" for placing on mouse cursor */
   float2 center = {0.0f, 0.0f};
diff --git a/source/blender/editors/space_node/node_group.cc b/source/blender/editors/space_node/node_group.cc
index 45aeaa41ad5..6fb8ff54988 100644
--- a/source/blender/editors/space_node/node_group.cc
+++ b/source/blender/editors/space_node/node_group.cc
@@ -441,10 +441,7 @@ void NODE_OT_group_ungroup(wmOperatorType *ot)
 static bool node_group_separate_selected(
     Main &bmain, bNodeTree &ntree, bNodeTree &ngroup, const float2 &offset, const bool make_copy)
 {
-  /* deselect all nodes in the target tree */
-  for (bNode *node : ntree.all_nodes()) {
-    nodeSetSelected(node, false);
-  }
+  node_deselect_all(ntree);
 
   ListBase anim_basepaths = {nullptr, nullptr};
 
@@ -809,10 +806,7 @@ static void node_group_make_insert_selected(const bContext &C,
   static const float offsetx = 200;
   static const float offsety = 0.0f;
 
-  /* deselect all nodes in the target tree */
-  for (bNode *node : ngroup->all_nodes()) {
-    nodeSetSelected(node, false);
-  }
+  node_deselect_all(*ngroup);
 
   /* auto-add interface for "solo" nodes */
   const bool expose_visible = nodes_to_move.size() == 1;
diff --git a/source/blender/editors/space_node/node_intern.hh b/source/blender/editors/space_node/node_intern.hh
index a4eb0c12713..9b2d55ab107 100644
--- a/source/blender/editors/space_node/node_intern.hh
+++ b/source/blender/editors/space_node/node_intern.hh
@@ -182,11 +182,11 @@ void node_keymap(wmKeyConfig *keyconf);
 rctf node_frame_rect_inside(const bNode &node);
 bool node_or_socket_isect_event(const bContext &C, const wmEvent &event);
 
-void node_deselect_all(SpaceNode &snode);
+void node_deselect_all(bNodeTree &node_tree);
 void node_socket_select(bNode *node, bNodeSocket &sock);
 void node_socket_deselect(bNode *node, bNodeSocket &sock, bool deselect_node);
-void node_deselect_all_input_sockets(SpaceNode &snode, bool deselect_nodes);
-void node_deselect_all_output_sockets(SpaceNode &snode, bool deselect_nodes);
+void node_deselect_all_input_sockets(bNodeTree &node_tree, bool deselect_nodes);
+void node_deselect_all_output_sockets(bNodeTree &node_tree, bool deselect_nodes);
 void node_select_single(bContext &C, bNode &node);
 
 void NODE_OT_select(wmOperatorType *ot);
diff --git a/source/blender/editors/space_node/node_relationships.cc b/source/blender/editors/space_node/node_relationships.cc
index 360f713e1a7..08b054f3d7d 100644
--- a/source/blender/editors/space_node/node_relationships.cc
+++ b/source/blender/editors/space_node/node_relationships.cc
@@ -1261,6 +1261,7 @@ static int node_make_link_exec(bContext *C, wmOperator *op)
 {
   Main &bmain = *CTX_data_main(C);
   SpaceNode &snode = *CTX_wm_space_node(C);
+  bNodeTree &node_tree = *snode.edittree;
   const bool replace = RNA_boolean_get(op->ptr, "replace");
 
   ED_preview_kill_jobs(CTX_wm_manager(C), &bmain);
@@ -1268,10 +1269,10 @@ static int node_make_link_exec(bContext *C, wmOperator *op)
   snode_autoconnect(snode, true, replace);
 
   /* deselect sockets after linking */
-  node_deselect_all_input_sockets(snode, false);
-  node_deselect_all_output_sockets(snode, false);
+  node_deselect_all_input_sockets(node_tree, false);
+  node_deselect_all_output_sockets(node_tree, false);
 
-  ED_node_tree_propagate_change(C, &bmain, snode.edittree);
+  ED_node_tree_propagate_change(C, &bmain, &node_tree);
 
   return OPERATOR_FINISHED;
 }
diff --git a/source/blender/editors/space_node/node_select.cc b/source/blender/editors/space_node/node_select.cc
index 7ecacde3874..67ed9a34c7d 100644
--- a/source/blender/editors/space_node/node_select.cc
+++ b/source/blender/editors/space_node/node_select.cc
@@ -246,21 +246,21 @@ static void node_socket_toggle(bNode *node, bNodeSocket &sock, bool deselect_nod
   }
 }
 
-void node_deselect_all(SpaceNode &snode)
+void node_deselect_all(bNodeTree &node_tree)
 {
-  for (bNode *node : snode.edittree->all_nodes()) {
+  for (bNode *node : node_tree.all_nodes()) {
     nodeSetSelected(node, false);
   }
 }
 
-void node_deselect_all_input_sockets(SpaceNode &snode, const bool deselect_nodes)
+void node_deselect_all_input_sockets(bNodeTree &node_tree, const bool deselect_nodes)
 {
   /* XXX not calling node_socket_deselect here each time, because this does iteration
    * over all node sockets internally to check if the node stays selected.
    * We can do that more efficiently here.
    */
 
-  for (bNode *node : snode.edittree->all_nodes()) {
+  for (bNode *node : node_tree.all_nodes()) {
     bool sel = false;
 
     LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) {
@@ -283,14 +283,14 @@ void node_deselect_all_input_sockets(SpaceNode &snode, const bool deselect_nodes
   }
 }
 
-void node_deselect_all_output_sockets(SpaceNode &snode, const bool deselect_nodes)
+void node_deselect_all_output_sockets(bNodeTree &node_tree, const bool deselect_nodes)
 {
   /*

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list