[Bf-blender-cvs] [3d014fa815c] master: Cleanup: Initialize gizmo snap keymap before using

Germano Cavalcante noreply at git.blender.org
Sat May 30 17:15:48 CEST 2020


Commit: 3d014fa815c9f839b419e018ec0c6cd78907cb7f
Author: Germano Cavalcante
Date:   Fri May 29 18:35:48 2020 -0300
Branches: master
https://developer.blender.org/rB3d014fa815c9f839b419e018ec0c6cd78907cb7f

Cleanup: Initialize gizmo snap keymap before using

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

M	source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c
M	source/blender/windowmanager/intern/wm_keymap.c

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

diff --git a/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c
index 1fdf1160d09..1ed02bd6cb9 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c
@@ -67,7 +67,6 @@ typedef struct SnapGizmo3D {
   /* We could have other snap contexts, for now only support 3D view. */
   SnapObjectContext *snap_context_v3d;
   int mval[2];
-  short snap_elem;
 
 #ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK
   wmKeyMap *keymap;
@@ -75,6 +74,7 @@ typedef struct SnapGizmo3D {
   bool invert_snap;
 #endif
   int use_snap_override;
+  short snap_elem;
 } SnapGizmo3D;
 
 #ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK
@@ -82,11 +82,8 @@ static bool invert_snap(const wmGizmo *gz, const wmWindowManager *wm, const wmEv
 {
   SnapGizmo3D *gizmo_snap = (SnapGizmo3D *)gz;
   wmKeyMap *keymap = WM_keymap_active(wm, gizmo_snap->keymap);
-  if (!keymap) {
-    return false;
-  }
 
-  int snap_on = gizmo_snap->snap_on;
+  const int snap_on = gizmo_snap->snap_on;
   for (wmKeyMapItem *kmi = keymap->items.first; kmi; kmi = kmi->next) {
     if (kmi->flag & KMI_INACTIVE) {
       continue;
@@ -408,14 +405,21 @@ static void gizmo_snap_draw(const bContext *C, wmGizmo *gz)
 static int gizmo_snap_test_select(bContext *C, wmGizmo *gz, const int mval[2])
 {
   SnapGizmo3D *gizmo_snap = (SnapGizmo3D *)gz;
+
 #ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK
   wmWindowManager *wm = CTX_wm_manager(C);
+  if (gizmo_snap->keymap == NULL) {
+    gizmo_snap->keymap = WM_modalkeymap_find(wm->defaultconf, "Generic Gizmo Tweak Modal Map");
+    RNA_enum_value_from_id(gizmo_snap->keymap->modal_items, "SNAP_ON", &gizmo_snap->snap_on);
+  }
+
   const bool invert = invert_snap(gz, wm, wm->winactive->eventstate);
   if (gizmo_snap->invert_snap == invert && gizmo_snap->mval[0] == mval[0] &&
       gizmo_snap->mval[1] == mval[1]) {
     /* Performance, do not update. */
     return gizmo_snap->snap_elem ? 0 : -1;
   }
+
   gizmo_snap->invert_snap = invert;
 #else
   if (gizmo_snap->mval[0] == mval[0] && gizmo_snap->mval[1] == mval[1]) {
@@ -425,14 +429,6 @@ static int gizmo_snap_test_select(bContext *C, wmGizmo *gz, const int mval[2])
 #endif
   copy_v2_v2_int(gizmo_snap->mval, mval);
 
-#ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK
-  if (gizmo_snap->keymap == NULL) {
-    gizmo_snap->keymap = WM_modalkeymap_find(wm->defaultconf, "Generic Gizmo Tweak Modal Map");
-    gizmo_snap->snap_on = -1;
-    RNA_enum_value_from_id(gizmo_snap->keymap->modal_items, "SNAP_ON", &gizmo_snap->snap_on);
-  }
-#endif
-
   ARegion *region = CTX_wm_region(C);
   View3D *v3d = CTX_wm_view3d(C);
   const float mval_fl[2] = {UNPACK2(mval)};
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index d7102a1e8af..d42d51a8d88 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -1945,6 +1945,7 @@ wmKeyMap *WM_keymap_active(const wmWindowManager *wm, wmKeyMap *keymap)
   }
 
   /* first user defined keymaps */
+  int count = BLI_listbase_count(&wm->userconf->keymaps);
   km = WM_keymap_list_find(
       &wm->userconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);



More information about the Bf-blender-cvs mailing list