Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElia Sarti <vekoon@gmail.com>2009-11-26 02:13:47 +0300
committerElia Sarti <vekoon@gmail.com>2009-11-26 02:13:47 +0300
commitaa5227664ab419d5446466fe0b3a368b05281fbe (patch)
treef1cbbcc27978d7948fd622fefc0b56f026bd676f
parentf6b03893945cac9bd79ed5bfe7eed12b3805c97d (diff)
After talking with Matt about this, added notifier NC_ID to handle ID changes, specifically ND_ID_RENAME for ID renaming. Done for outliner, 3d view and properties editor.
-rw-r--r--source/blender/editors/space_buttons/space_buttons.c4
-rw-r--r--source/blender/editors/space_outliner/outliner.c2
-rw-r--r--source/blender/editors/space_outliner/space_outliner.c4
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c8
-rw-r--r--source/blender/makesrna/intern/rna_ID.c3
-rw-r--r--source/blender/windowmanager/WM_types.h4
6 files changed, 24 insertions, 1 deletions
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index 2c918bd9b30..de8a1616496 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -308,6 +308,10 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
if(wmn->data == ND_SPACE_PROPERTIES)
ED_area_tag_redraw(sa);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_area_tag_redraw(sa);
+ break;
}
if(wmn->data == ND_KEYS)
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index 39eecd7d2de..bfb1724af35 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -4747,7 +4747,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
case ID_SCE:
WM_event_add_notifier(C, NC_SCENE, NULL); break;
default:
- WM_event_add_notifier(C, NC_MATERIAL, NULL); break;
+ WM_event_add_notifier(C, NC_ID|ND_ID_RENAME, NULL); break;
}
/* Check the library target exists */
if (te->idcode == ID_LI) {
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c
index 5c6a8701f18..e3fbb13ed7d 100644
--- a/source/blender/editors/space_outliner/space_outliner.c
+++ b/source/blender/editors/space_outliner/space_outliner.c
@@ -147,6 +147,10 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_OUTLINER)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index d11eee466ed..787df5150f4 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -517,6 +517,10 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_VIEW3D)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
@@ -639,6 +643,10 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
if(wmn->data == ND_SPACE_VIEW3D)
ED_region_tag_redraw(ar);
break;
+ case NC_ID:
+ if(wmn->data == ND_ID_RENAME)
+ ED_region_tag_redraw(ar);
+ break;
}
}
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index cb1a1211d24..3bcdf373c43 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -31,6 +31,8 @@
#include "DNA_ID.h"
+#include "WM_types.h"
+
#include "rna_internal.h"
/* enum of ID-block types
@@ -301,6 +303,7 @@ static void rna_def_ID(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name.");
RNA_def_property_string_funcs(prop, "rna_ID_name_get", "rna_ID_name_length", "rna_ID_name_set");
RNA_def_property_string_maxlength(prop, sizeof(((ID*)NULL)->name)-2);
+ RNA_def_property_update(prop, NC_ID|ND_ID_RENAME, NULL);
RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "users", PROP_INT, PROP_UNSIGNED);
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 3f0c52f0f2c..53cca69fffc 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -136,6 +136,7 @@ typedef struct wmNotifier {
#define NC_SPACE (15<<24)
#define NC_GEOM (16<<24)
#define NC_NODE (17<<24)
+#define NC_ID (18<<24)
/* data type, 256 entries is enough, it can overlap */
#define NOTE_DATA 0x00FF0000
@@ -215,6 +216,9 @@ typedef struct wmNotifier {
/* NC_NODE Nodes */
#define ND_NODE_SELECT (1<<16)
+ /* NC_ID IDs */
+#define ND_ID_RENAME (1<<16)
+
/* NC_SPACE */
#define ND_SPACE_CONSOLE (1<<16) /* general redraw */