Fix active tool side-bar redrawing on tool change
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user