Revert "Fix invalid area tool being set from message passing"

This reverts commit 9ec8887599.

Causes assert when selection changes modes.
This commit is contained in:
Campbell Barton 2019-06-28 18:47:47 +10:00
parent 6f0de2328c
commit f35ef57c8c
3 changed files with 32 additions and 1 deletions

View File

@ -980,7 +980,7 @@ static void view3d_main_region_message_subscribe(const struct bContext *C,
struct WorkSpace *UNUSED(workspace),
struct Scene *UNUSED(scene),
struct bScreen *UNUSED(screen),
struct ScrArea *UNUSED(sa),
struct ScrArea *sa,
struct ARegion *ar,
struct wmMsgBus *mbus)
{
@ -1054,6 +1054,16 @@ static void view3d_main_region_message_subscribe(const struct bContext *C,
break;
}
}
{
wmMsgSubscribeValue msg_sub_value_region_tag_refresh = {
.owner = ar,
.user_data = sa,
.notify = WM_toolsystem_do_msg_notify_tag_refresh,
};
WM_msg_subscribe_rna_anon_prop(mbus, Object, mode, &msg_sub_value_region_tag_refresh);
WM_msg_subscribe_rna_anon_prop(mbus, LayerObjects, active, &msg_sub_value_region_tag_refresh);
}
}
/* concept is to retrieve cursor type context-less */

View File

@ -99,6 +99,10 @@ void WM_toolsystem_update_from_context(struct bContext *C,
bool WM_toolsystem_active_tool_is_brush(const struct bContext *C);
void WM_toolsystem_do_msg_notify_tag_refresh(struct bContext *C,
struct wmMsgSubscribeKey *msg_key,
struct wmMsgSubscribeValue *msg_val);
struct IDProperty *WM_toolsystem_ref_properties_ensure_idprops(struct bToolRef *tref);
void WM_toolsystem_ref_properties_ensure_ex(struct bToolRef *tref,
const char *idname,

View File

@ -794,6 +794,23 @@ bool WM_toolsystem_active_tool_is_brush(const bContext *C)
return tref_rt && (tref_rt->data_block[0] != '\0');
}
/* Follow wmMsgNotifyFn spec */
void WM_toolsystem_do_msg_notify_tag_refresh(bContext *C,
wmMsgSubscribeKey *UNUSED(msg_key),
wmMsgSubscribeValue *msg_val)
{
WorkSpace *workspace = CTX_wm_workspace(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
ScrArea *sa = msg_val->user_data;
int space_type = sa->spacetype;
const bToolKey tkey = {
.space_type = space_type,
.mode = WM_toolsystem_mode_from_spacetype(view_layer, sa, sa->spacetype),
};
WM_toolsystem_refresh(C, workspace, &tkey);
WM_toolsystem_refresh_screen_area(workspace, view_layer, sa);
}
IDProperty *WM_toolsystem_ref_properties_ensure_idprops(bToolRef *tref)
{
if (tref->properties == NULL) {