diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-05-03 07:15:38 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-05-03 07:15:38 +0300 |
commit | fbd366713e74de09514a2e1a478953b9f58e5a39 (patch) | |
tree | 07f80794147647dc1146c95824de52539963b028 /source | |
parent | 4a3a0e3ef59fe906bdac60163a8177f477dd9d65 (diff) |
Fix active tool side-bar redrawing on tool change
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/include/ED_screen.h | 7 | ||||
-rw-r--r-- | source/blender/editors/screen/area.c | 24 | ||||
-rw-r--r-- | source/blender/editors/space_image/space_image.c | 1 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 5 |
4 files changed, 35 insertions, 2 deletions
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 543b2a5781f..264eb6abdf1 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -142,6 +142,13 @@ void ED_area_do_mgs_subscribe_for_tool_header(const struct bContext *C, struct ScrArea *sa, struct ARegion *ar, struct wmMsgBus *mbus); +void ED_area_do_mgs_subscribe_for_tool_ui(const struct bContext *C, + struct WorkSpace *workspace, + struct Scene *scene, + struct bScreen *screen, + struct ScrArea *sa, + struct ARegion *ar, + struct wmMsgBus *mbus); /* message bus */ void ED_region_message_subscribe(struct bContext *C, diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 5fe6f98e968..8c73f4cd649 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -467,6 +467,7 @@ void ED_area_do_mgs_subscribe_for_tool_header( struct ARegion *ar, struct wmMsgBus *mbus) { + BLI_assert(ar->regiontype == RGN_TYPE_TOOL_HEADER); wmMsgSubscribeValue msg_sub_value_region_tag_redraw = { .owner = ar, .user_data = ar, @@ -476,6 +477,29 @@ void ED_area_do_mgs_subscribe_for_tool_header( mbus, &workspace->id, workspace, WorkSpace, tools, &msg_sub_value_region_tag_redraw); } +void ED_area_do_mgs_subscribe_for_tool_ui( + /* Follow ARegionType.message_subscribe */ + const struct bContext *UNUSED(C), + struct WorkSpace *workspace, + struct Scene *UNUSED(scene), + struct bScreen *UNUSED(screen), + struct ScrArea *UNUSED(sa), + struct ARegion *ar, + struct wmMsgBus *mbus) +{ + BLI_assert(ar->regiontype == RGN_TYPE_UI); + const char *category = UI_panel_category_active_get(ar, false); + if (category && STREQ(category, "Tool")) { + wmMsgSubscribeValue msg_sub_value_region_tag_redraw = { + .owner = ar, + .user_data = ar, + .notify = ED_region_do_msg_notify_tag_redraw, + }; + WM_msg_subscribe_rna_prop( + mbus, &workspace->id, workspace, WorkSpace, tools, &msg_sub_value_region_tag_redraw); + } +} + /** * Although there's no general support for minimizing areas, the status-bar can * be snapped to be only a few pixels high. A few pixels rather than 0 so it diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 386e258a833..3b2386d94e6 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -1038,6 +1038,7 @@ void ED_spacetype_image(void) art->prefsizex = 220; // XXX art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES; art->listener = image_buttons_region_listener; + art->message_subscribe = ED_area_do_mgs_subscribe_for_tool_ui; art->init = image_buttons_region_init; art->layout = image_buttons_region_layout; art->draw = image_buttons_region_draw; diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index e7a7d2041a3..3bc8a64dd20 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -1510,6 +1510,7 @@ void ED_spacetype_view3d(void) art->prefsizex = 180; /* XXX */ art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES; art->listener = view3d_buttons_region_listener; + art->message_subscribe = ED_area_do_mgs_subscribe_for_tool_ui; art->init = view3d_buttons_region_init; art->draw = view3d_buttons_region_draw; BLI_addhead(&st->regiontypes, art); @@ -1535,9 +1536,9 @@ void ED_spacetype_view3d(void) art->prefsizey = HEADERY; art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D | ED_KEYMAP_FRAMES | ED_KEYMAP_HEADER; art->listener = view3d_header_region_listener; + art->message_subscribe = ED_area_do_mgs_subscribe_for_tool_header; art->init = view3d_header_region_init; art->draw = view3d_header_region_draw; - art->message_subscribe = ED_area_do_mgs_subscribe_for_tool_header; BLI_addhead(&st->regiontypes, art); /* regions: header */ @@ -1546,9 +1547,9 @@ void ED_spacetype_view3d(void) art->prefsizey = HEADERY; art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D | ED_KEYMAP_FRAMES | ED_KEYMAP_HEADER; art->listener = view3d_header_region_listener; + art->message_subscribe = view3d_header_region_message_subscribe; art->init = view3d_header_region_init; art->draw = view3d_header_region_draw; - art->message_subscribe = view3d_header_region_message_subscribe; BLI_addhead(&st->regiontypes, art); /* regions: hud */ |