[Bf-blender-cvs] [aa1af7f8e40] master: Fix T72416: Tool settings ignored when activated from gizmo

Campbell Barton noreply at git.blender.org
Tue Dec 17 04:56:14 CET 2019


Commit: aa1af7f8e40e9f67f40bb4bf96756b83d2b0189a
Author: Campbell Barton
Date:   Tue Dec 17 14:55:41 2019 +1100
Branches: master
https://developer.blender.org/rBaa1af7f8e40e9f67f40bb4bf96756b83d2b0189a

Fix T72416: Tool settings ignored when activated from gizmo

===================================================================

M	source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c
M	source/blender/windowmanager/intern/wm_event_system.c

===================================================================

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;



More information about the Bf-blender-cvs mailing list