[Bf-blender-cvs] [be36c4d37d7] temp-spreadsheet-editor: initial listeners for main region

Jacques Lucke noreply at git.blender.org
Mon Mar 1 18:18:24 CET 2021


Commit: be36c4d37d7e3b600c5daf10e4e12101cc16de15
Author: Jacques Lucke
Date:   Mon Mar 1 16:59:04 2021 +0100
Branches: temp-spreadsheet-editor
https://developer.blender.org/rBbe36c4d37d7e3b600c5daf10e4e12101cc16de15

initial listeners for main region

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

M	source/blender/editors/space_spreadsheet/space_spreadsheet.cc
M	source/blender/makesrna/intern/rna_space.c
M	source/blender/windowmanager/WM_types.h

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

diff --git a/source/blender/editors/space_spreadsheet/space_spreadsheet.cc b/source/blender/editors/space_spreadsheet/space_spreadsheet.cc
index bdb0b81dc97..ee5a689f885 100644
--- a/source/blender/editors/space_spreadsheet/space_spreadsheet.cc
+++ b/source/blender/editors/space_spreadsheet/space_spreadsheet.cc
@@ -149,8 +149,34 @@ static void spreadsheet_main_region_draw(const bContext *C, ARegion *region)
 
 static void spreadsheet_main_region_listener(const wmRegionListenerParams *params)
 {
-  /* TODO: Do more precise check. */
-  ED_region_tag_redraw(params->region);
+  ARegion *region = params->region;
+  wmNotifier *wmn = params->notifier;
+
+  switch (wmn->category) {
+    case NC_SCENE: {
+      switch (wmn->data) {
+        case ND_OB_ACTIVE: {
+          ED_region_tag_redraw(region);
+          break;
+        }
+      }
+      break;
+    }
+    case NC_OBJECT: {
+      ED_region_tag_redraw(region);
+      break;
+    }
+    case NC_SPACE: {
+      if (wmn->data == ND_SPACE_SPREADSHEET) {
+        ED_region_tag_redraw(region);
+      }
+      break;
+    }
+    case NC_GEOM: {
+      ED_region_tag_redraw(region);
+      break;
+    }
+  }
 }
 
 static void spreadsheet_header_region_init(wmWindowManager *UNUSED(wm), ARegion *region)
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index f2f2aa1b34d..4e793d0e133 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -7196,13 +7196,13 @@ static void rna_def_space_spreadsheet(BlenderRNA *brna)
   RNA_def_property_flag(prop, PROP_EDITABLE);
   RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceSpreadsheet_pinned_id_set", NULL, NULL);
   RNA_def_property_ui_text(prop, "Pinned ID", "Data-block whose values are displayed");
-  RNA_def_property_update(prop, NC_SPACE, NULL);
+  RNA_def_property_update(prop, NC_SPACE | ND_SPACE_SPREADSHEET, NULL);
 
   prop = RNA_def_property(srna, "show_only_selected", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "filter_flag", SPREADSHEET_FILTER_SELECTED_ONLY);
   RNA_def_property_ui_text(
       prop, "Show Only Selected", "Only include rows that correspond to selected elements");
-  RNA_def_property_update(prop, NC_SPACE, NULL);
+  RNA_def_property_update(prop, NC_SPACE | ND_SPACE_SPREADSHEET, NULL);
 }
 
 void RNA_def_space(BlenderRNA *brna)
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index d40c0715a09..686194e8b0e 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -427,6 +427,7 @@ typedef struct wmNotifier {
 #define ND_SPACE_CHANGED (19 << 16) /*sent to a new editor type after it's replaced an old one*/
 #define ND_SPACE_CLIP (20 << 16)
 #define ND_SPACE_FILE_PREVIEW (21 << 16)
+#define ND_SPACE_SPREADSHEET (22 << 16)
 
 /* subtype, 256 entries too */
 #define NOTE_SUBTYPE 0x0000FF00



More information about the Bf-blender-cvs mailing list