Fix active tool side-bar redrawing on tool change

This commit is contained in:
Campbell Barton
2019-05-03 14:15:38 +10:00
parent 4a3a0e3ef5
commit fbd366713e
4 changed files with 35 additions and 2 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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;

View File

@@ -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 */