[Bf-blender-cvs] [5ea958a9925] temp-geometry-nodes-viewer-node: update spreadsheet context when activating viewer

Jacques Lucke noreply at git.blender.org
Mon May 31 13:49:55 CEST 2021


Commit: 5ea958a9925833d528006d1fbf1341ae971ea6ca
Author: Jacques Lucke
Date:   Mon May 31 13:08:20 2021 +0200
Branches: temp-geometry-nodes-viewer-node
https://developer.blender.org/rB5ea958a9925833d528006d1fbf1341ae971ea6ca

update spreadsheet context when activating viewer

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

M	source/blender/editors/include/ED_node.h
M	source/blender/editors/space_buttons/buttons_texture.c
M	source/blender/editors/space_node/node_add.c
M	source/blender/editors/space_node/node_edit.c
M	source/blender/editors/space_node/node_select.c
M	source/blender/editors/space_spreadsheet/spreadsheet_context.cc

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

diff --git a/source/blender/editors/include/ED_node.h b/source/blender/editors/include/ED_node.h
index 67a50b83bd6..88cbeea7460 100644
--- a/source/blender/editors/include/ED_node.h
+++ b/source/blender/editors/include/ED_node.h
@@ -40,6 +40,7 @@ struct bNodeSocketType;
 struct bNodeTree;
 struct bNodeTreeType;
 struct bNodeType;
+struct SpaceNode;
 
 typedef enum {
   NODE_TOP = 1,
@@ -109,6 +110,7 @@ bool ED_node_select_check(ListBase *lb);
 void ED_node_select_all(ListBase *lb, int action);
 void ED_node_post_apply_transform(struct bContext *C, struct bNodeTree *ntree);
 void ED_node_set_active(struct Main *bmain,
+                        struct SpaceNode *snode,
                         struct bNodeTree *ntree,
                         struct bNode *node,
                         bool *r_active_texture_changed);
diff --git a/source/blender/editors/space_buttons/buttons_texture.c b/source/blender/editors/space_buttons/buttons_texture.c
index 97e3cb750c1..f1debcef5a9 100644
--- a/source/blender/editors/space_buttons/buttons_texture.c
+++ b/source/blender/editors/space_buttons/buttons_texture.c
@@ -451,7 +451,7 @@ static void template_texture_select(bContext *C, void *user_p, void *UNUSED(arg)
 
   /* set user as active */
   if (user->node) {
-    ED_node_set_active(CTX_data_main(C), user->ntree, user->node, NULL);
+    ED_node_set_active(CTX_data_main(C), NULL, user->ntree, user->node, NULL);
     ct->texture = NULL;
 
     /* Not totally sure if we should also change selection? */
diff --git a/source/blender/editors/space_node/node_add.c b/source/blender/editors/space_node/node_add.c
index a28d467df2e..8bb5415b40b 100644
--- a/source/blender/editors/space_node/node_add.c
+++ b/source/blender/editors/space_node/node_add.c
@@ -90,7 +90,7 @@ bNode *node_add_node(const bContext *C, const char *idname, int type, float locx
   nodeSetSelected(node, true);
 
   ntreeUpdateTree(bmain, snode->edittree);
-  ED_node_set_active(bmain, snode->edittree, node, NULL);
+  ED_node_set_active(bmain, snode, snode->edittree, node, NULL);
 
   snode_update(snode, node);
 
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 50fa8b28468..1f1f5aadec6 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -54,6 +54,7 @@
 #include "ED_render.h"
 #include "ED_screen.h"
 #include "ED_select_utils.h"
+#include "ED_spreadsheet.h"
 
 #include "RNA_access.h"
 #include "RNA_define.h"
@@ -662,7 +663,8 @@ void snode_update(SpaceNode *snode, bNode *node)
   }
 }
 
-void ED_node_set_active(Main *bmain, bNodeTree *ntree, bNode *node, bool *r_active_texture_changed)
+void ED_node_set_active(
+    Main *bmain, SpaceNode *snode, bNodeTree *ntree, bNode *node, bool *r_active_texture_changed)
 {
   const bool was_active_texture = (node->flag & NODE_ACTIVE_TEXTURE) != 0;
   if (r_active_texture_changed) {
@@ -782,6 +784,24 @@ void ED_node_set_active(Main *bmain, bNodeTree *ntree, bNode *node, bool *r_acti
       }
 #endif
     }
+    else if (ntree->type == NTREE_GEOMETRY) {
+      if (node->type == GEO_NODE_VIEWER) {
+        wmWindowManager *wm = bmain->wm.first;
+        LISTBASE_FOREACH (wmWindow *, window, &wm->windows) {
+          bScreen *screen = BKE_workspace_active_screen_get(window->workspace_hook);
+          LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
+            SpaceLink *sl = (SpaceLink *)area->spacedata.first;
+            if (sl->spacetype == SPACE_SPREADSHEET) {
+              SpaceSpreadsheet *sspreadsheet = (SpaceSpreadsheet *)sl;
+              if ((sspreadsheet->flag & SPREADSHEET_FLAG_PINNED) == 0) {
+                ED_spreadsheet_set_geometry_node_context(sspreadsheet, snode, node);
+                ED_area_tag_redraw(area);
+              }
+            }
+          }
+        }
+      }
+    }
   }
 }
 
diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c
index de63aa07acb..14939c91d99 100644
--- a/source/blender/editors/space_node/node_select.c
+++ b/source/blender/editors/space_node/node_select.c
@@ -468,7 +468,7 @@ void node_select_single(bContext *C, bNode *node)
   }
   nodeSetSelected(node, true);
 
-  ED_node_set_active(bmain, snode->edittree, node, &active_texture_changed);
+  ED_node_set_active(bmain, snode, snode->edittree, node, &active_texture_changed);
   ED_node_set_active_viewer_key(snode);
 
   ED_node_sort(snode->edittree);
@@ -606,7 +606,7 @@ static int node_mouse_select(bContext *C,
   if (ret_value != OPERATOR_CANCELLED) {
     bool active_texture_changed = false;
     if (node != NULL && ret_value != OPERATOR_RUNNING_MODAL) {
-      ED_node_set_active(bmain, snode->edittree, node, &active_texture_changed);
+      ED_node_set_active(bmain, snode, snode->edittree, node, &active_texture_changed);
     }
     ED_node_set_active_viewer_key(snode);
     ED_node_sort(snode->edittree);
diff --git a/source/blender/editors/space_spreadsheet/spreadsheet_context.cc b/source/blender/editors/space_spreadsheet/spreadsheet_context.cc
index 3eb43338908..38d57b6fa81 100644
--- a/source/blender/editors/space_spreadsheet/spreadsheet_context.cc
+++ b/source/blender/editors/space_spreadsheet/spreadsheet_context.cc
@@ -24,6 +24,7 @@
 #include "BLI_utildefines.h"
 #include "BLI_vector.hh"
 
+#include "ED_screen.h"
 #include "ED_spreadsheet.h"
 
 #include "DEG_depsgraph.h"



More information about the Bf-blender-cvs mailing list