diff options
author | Matt Ebb <matt@mke3.net> | 2009-12-17 09:06:30 +0300 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2009-12-17 09:06:30 +0300 |
commit | b438dd8668704a01225fb650413aa75f715a2933 (patch) | |
tree | 63f00dc10b69889f422ce1ef24252c4a153f690a /source/blender/editors | |
parent | fac65a3f4d1645fb59ed0b023247535b4b1d6d77 (diff) |
Notifier related tweaks, partially from patch 20370 by Jason Millis
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/object/object_hook.c | 5 | ||||
-rw-r--r-- | source/blender/editors/object/object_vgroup.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_buttons/space_buttons.c | 51 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 1 |
4 files changed, 44 insertions, 15 deletions
diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index a2feee54c8c..313ffe79c66 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -491,7 +491,7 @@ static int object_add_hook_selob_exec(bContext *C, wmOperator *op) add_hook_object(scene, obedit, obsel, OBJECT_ADDHOOK_SELOB); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit); return OPERATOR_FINISHED; } @@ -518,6 +518,7 @@ static int object_add_hook_newob_exec(bContext *C, wmOperator *op) add_hook_object(scene, obedit, NULL, OBJECT_ADDHOOK_NEWOB); WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit); return OPERATOR_FINISHED; } @@ -559,7 +560,7 @@ static int object_hook_remove_exec(bContext *C, wmOperator *op) modifier_free((ModifierData *)hmd); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index d9c21a9c9a5..43fabff6793 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -1736,7 +1736,7 @@ static int set_active_group_exec(bContext *C, wmOperator *op) ob->actdef= nr+1; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 160343cf940..acc34fce660 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -236,6 +236,17 @@ static void buttons_header_area_draw(const bContext *C, ARegion *ar) UI_view2d_view_restore(C); } +/* draw a certain button set only if properties area is currently + * showing that button set, to reduce unnecessary drawing. */ +static void buttons_area_redraw(ScrArea *sa, short buttons) +{ + SpaceButs *sbuts= sa->spacedata.first; + + /* if the area's current button set is equal to the one to redraw */ + if(sbuts->mainb == buttons) + ED_area_tag_redraw(sa); +} + /* reused! */ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) { @@ -244,38 +255,45 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) /* context changes */ switch(wmn->category) { case NC_SCENE: - /* lazy general redraw tag here, in case more than 1 propertie window is opened - Not all RNA props have a ND_sub notifier(yet) */ - ED_area_tag_redraw(sa); switch(wmn->data) { case ND_FRAME: - case ND_MODE: case ND_RENDER_OPTIONS: - case ND_KEYINGSET: - case ND_LAYER: - ED_area_tag_redraw(sa); + buttons_area_redraw(sa, BCONTEXT_RENDER); break; - case ND_OB_ACTIVE: ED_area_tag_redraw(sa); sbuts->preview= 1; break; + case ND_KEYINGSET: + buttons_area_redraw(sa, BCONTEXT_SCENE); + break; + case ND_MODE: + case ND_LAYER: + default: + ED_area_tag_redraw(sa); + break; } break; case NC_OBJECT: - ED_area_tag_redraw(sa); - /* lazy general redraw tag here, in case more than 1 propertie window is opened - Not all RNA props have a ND_ notifier(yet) */ switch(wmn->data) { case ND_TRANSFORM: + buttons_area_redraw(sa, BCONTEXT_OBJECT); + break; case ND_BONE_ACTIVE: case ND_BONE_SELECT: + buttons_area_redraw(sa, BCONTEXT_BONE); + break; case ND_MODIFIER: if(wmn->action == NA_RENAME) ED_area_tag_redraw(sa); + else + buttons_area_redraw(sa, BCONTEXT_MODIFIER); break; case ND_CONSTRAINT: - ED_area_tag_redraw(sa); + buttons_area_redraw(sa, BCONTEXT_CONSTRAINT); + break; + case ND_PARTICLE_DATA: + buttons_area_redraw(sa, BCONTEXT_PARTICLE); break; case ND_DRAW: case ND_SHADING: @@ -283,6 +301,10 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) /* currently works by redraws... if preview is set, it (re)starts job */ sbuts->preview= 1; break; + default: + /* Not all object RNA props have a ND_ notifier (yet) */ + ED_area_tag_redraw(sa); + break; } break; case NC_GEOM: @@ -304,7 +326,12 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) } break; case NC_WORLD: + buttons_area_redraw(sa, BCONTEXT_WORLD); + break; case NC_LAMP: + buttons_area_redraw(sa, BCONTEXT_DATA); + sbuts->preview= 1; + break; case NC_TEXTURE: ED_area_tag_redraw(sa); sbuts->preview= 1; diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index e65cb98e665..e362303c3cc 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -452,6 +452,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_ACTIVE: case ND_OB_SELECT: case ND_LAYER: + case ND_RENDER_OPTIONS: case ND_MODE: ED_region_tag_redraw(ar); break; |