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.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user