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/space_buttons/space_buttons.c | |
parent | fac65a3f4d1645fb59ed0b023247535b4b1d6d77 (diff) |
Notifier related tweaks, partially from patch 20370 by Jason Millis
Diffstat (limited to 'source/blender/editors/space_buttons/space_buttons.c')
-rw-r--r-- | source/blender/editors/space_buttons/space_buttons.c | 51 |
1 files changed, 39 insertions, 12 deletions
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; |