[Bf-blender-cvs] [379bb0706ca] master: Fix fallback tool for tools that don't define their own keymaps

Campbell Barton noreply at git.blender.org
Thu Dec 12 11:10:52 CET 2019


Commit: 379bb0706caa62bfa96b2219c4493402fa8a836c
Author: Campbell Barton
Date:   Thu Dec 12 19:08:27 2019 +1100
Branches: master
https://developer.blender.org/rB379bb0706caa62bfa96b2219c4493402fa8a836c

Fix fallback tool for tools that don't define their own keymaps

Needed for UV editor transform tool.

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

M	source/blender/windowmanager/intern/wm_event_system.c

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

diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index f24b7826b01..1f2eb4e28fc 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -3727,12 +3727,12 @@ wmKeyMap *WM_event_get_keymap_from_toolsystem(wmWindowManager *wm, wmEventHandle
   ScrArea *sa = handler->dynamic.user_data;
   handler->keymap_tool = NULL;
   bToolRef_Runtime *tref_rt = sa->runtime.tool ? sa->runtime.tool->runtime : NULL;
-  if (tref_rt && tref_rt->keymap[0]) {
+  if (tref_rt && (tref_rt->keymap[0] || tref_rt->keymap_fallback[0])) {
     const char *keymap_id = tref_rt->keymap;
 
     /* Support for the gizmo owning the tool keymap. */
     if (USER_EXPEREMENTAL_TEST(&U, use_tool_fallback)) {
-      if (tref_rt->gizmo_group[0] != '\0') {
+      if (tref_rt->gizmo_group[0] != '\0' && tref_rt->keymap_fallback[0] != '\n') {
         wmGizmoMap *gzmap = NULL;
         wmGizmoGroup *gzgroup = NULL;
         for (ARegion *ar = sa->regionbase.first; ar; ar = ar->next) {
@@ -3750,9 +3750,7 @@ wmKeyMap *WM_event_get_keymap_from_toolsystem(wmWindowManager *wm, wmEventHandle
             if (gzgroup->use_fallback_keymap) {
               wmGizmo *highlight = wm_gizmomap_highlight_get(gzmap);
               if (highlight == NULL) {
-                if (tref_rt->keymap_fallback[0]) {
-                  keymap_id = tref_rt->keymap_fallback;
-                }
+                keymap_id = tref_rt->keymap_fallback;
               }
             }
           }
@@ -3760,15 +3758,18 @@ wmKeyMap *WM_event_get_keymap_from_toolsystem(wmWindowManager *wm, wmEventHandle
       }
     }
 
-    wmKeyMap *km = WM_keymap_list_find_spaceid_or_empty(
-        &wm->userconf->keymaps, keymap_id, sa->spacetype, RGN_TYPE_WINDOW);
-    /* We shouldn't use keymaps from unrelated spaces. */
-    if (km != NULL) {
-      handler->keymap_tool = sa->runtime.tool;
-      return km;
-    }
-    else {
-      printf("Keymap: '%s' not found for tool '%s'\n", tref_rt->keymap, sa->runtime.tool->idname);
+    if (keymap_id[0]) {
+      wmKeyMap *km = WM_keymap_list_find_spaceid_or_empty(
+          &wm->userconf->keymaps, keymap_id, sa->spacetype, RGN_TYPE_WINDOW);
+      /* We shouldn't use keymaps from unrelated spaces. */
+      if (km != NULL) {
+        handler->keymap_tool = sa->runtime.tool;
+        return km;
+      }
+      else {
+        printf(
+            "Keymap: '%s' not found for tool '%s'\n", tref_rt->keymap, sa->runtime.tool->idname);
+      }
     }
   }
   return NULL;



More information about the Bf-blender-cvs mailing list