From aa1af7f8e40e9f67f40bb4bf96756b83d2b0189a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 17 Dec 2019 14:55:41 +1100 Subject: [PATCH] Fix T72416: Tool settings ignored when activated from gizmo --- .../space_view3d/view3d_gizmo_tool_generic.c | 2 ++ .../windowmanager/intern/wm_event_system.c | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c b/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c index 848accb8534..81e5a8a76b9 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c @@ -109,6 +109,8 @@ static wmGizmo *tool_generic_create_gizmo(const bContext *C, wmGizmoGroup *gzgro RNA_float_set(gz->ptr, "backdrop_fill_alpha", 0.125f); } + gz->flag |= WM_GIZMO_OPERATOR_TOOL_INIT; + bToolRef *tref = WM_toolsystem_ref_from_context((bContext *)C); wmWindowManager *wm = CTX_wm_manager(C); struct wmKeyConfig *kc = wm->defaultconf; diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 01f80ab9297..4117c036dcb 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2265,9 +2265,18 @@ static int wm_handler_operator_call(bContext *C, bool use_last_properties = true; PointerRNA tool_properties = {0}; - bToolRef *keymap_tool = ((handler_base->type == WM_HANDLER_TYPE_KEYMAP) ? - ((wmEventHandler_Keymap *)handler_base)->keymap_tool : - NULL); + bToolRef *keymap_tool = NULL; + if (handler_base->type == WM_HANDLER_TYPE_KEYMAP) { + keymap_tool = ((wmEventHandler_Keymap *)handler_base)->keymap_tool; + } + else if (handler_base->type == WM_HANDLER_TYPE_GIZMO) { + wmGizmoMap *gizmo_map = ((wmEventHandler_Gizmo *)handler_base)->gizmo_map; + wmGizmo *gz = wm_gizmomap_highlight_get(gizmo_map); + if (gz && (gz->flag & WM_GIZMO_OPERATOR_TOOL_INIT)) { + keymap_tool = WM_toolsystem_ref_from_context(C); + } + } + const bool is_tool = (keymap_tool != NULL); const bool use_tool_properties = is_tool;