[Bf-blender-cvs] [2919c4bf9df] master: Cleanup: use explicit check for WM_KEYMAP_UPDATE_RECONFIGURE

Campbell Barton noreply at git.blender.org
Sun Mar 14 08:09:50 CET 2021


Commit: 2919c4bf9df4fc1cf6a10aec152411b02598dc9b
Author: Campbell Barton
Date:   Sun Mar 14 18:03:16 2021 +1100
Branches: master
https://developer.blender.org/rB2919c4bf9df4fc1cf6a10aec152411b02598dc9b

Cleanup: use explicit check for WM_KEYMAP_UPDATE_RECONFIGURE

A block of code ran when `wm_keymap_update_flag` was non-zero,
replace this with explicit flag check since it wasn't
immediately obvious which flag needed to be set.

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

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

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

diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 1b4908224cc..38d06ea83d3 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -1801,72 +1801,71 @@ void WM_keyconfig_update(wmWindowManager *wm)
     wm_keymap_update_flag &= ~WM_KEYMAP_UPDATE_OPERATORTYPE;
   }
 
-  if (wm_keymap_update_flag == 0) {
-    return;
-  }
-
-  /* update operator properties for non-modal user keymaps */
-  LISTBASE_FOREACH (wmKeyMap *, km, &U.user_keymaps) {
-    if ((km->flag & KEYMAP_MODAL) == 0) {
-      LISTBASE_FOREACH (wmKeyMapDiffItem *, kmdi, &km->diff_items) {
-        if (kmdi->add_item) {
-          wm_keymap_item_properties_set(kmdi->add_item);
+  if (wm_keymap_update_flag & WM_KEYMAP_UPDATE_RECONFIGURE) {
+    /* update operator properties for non-modal user keymaps */
+    LISTBASE_FOREACH (wmKeyMap *, km, &U.user_keymaps) {
+      if ((km->flag & KEYMAP_MODAL) == 0) {
+        LISTBASE_FOREACH (wmKeyMapDiffItem *, kmdi, &km->diff_items) {
+          if (kmdi->add_item) {
+            wm_keymap_item_properties_set(kmdi->add_item);
+          }
+          if (kmdi->remove_item) {
+            wm_keymap_item_properties_set(kmdi->remove_item);
+          }
         }
-        if (kmdi->remove_item) {
-          wm_keymap_item_properties_set(kmdi->remove_item);
+
+        LISTBASE_FOREACH (wmKeyMapItem *, kmi, &km->items) {
+          wm_keymap_item_properties_set(kmi);
         }
       }
+    }
 
-      LISTBASE_FOREACH (wmKeyMapItem *, kmi, &km->items) {
-        wm_keymap_item_properties_set(kmi);
+    /* update U.user_keymaps with user key configuration changes */
+    LISTBASE_FOREACH (wmKeyMap *, km, &wm->userconf->keymaps) {
+      /* only diff if the user keymap was modified */
+      if (wm_keymap_test_and_clear_update(km)) {
+        /* find keymaps */
+        wmKeyMap *defaultmap = wm_keymap_preset(wm, km);
+        wmKeyMap *addonmap = WM_keymap_list_find(
+            &wm->addonconf->keymaps, km->idname, km->spaceid, km->regionid);
+
+        /* diff */
+        if (defaultmap) {
+          wm_keymap_diff_update(&U.user_keymaps, defaultmap, addonmap, km);
+        }
       }
     }
-  }
 
-  /* update U.user_keymaps with user key configuration changes */
-  LISTBASE_FOREACH (wmKeyMap *, km, &wm->userconf->keymaps) {
-    /* only diff if the user keymap was modified */
-    if (wm_keymap_test_and_clear_update(km)) {
+    /* create user key configuration from preset + addon + user preferences */
+    LISTBASE_FOREACH (wmKeyMap *, km, &wm->defaultconf->keymaps) {
       /* find keymaps */
       wmKeyMap *defaultmap = wm_keymap_preset(wm, km);
       wmKeyMap *addonmap = WM_keymap_list_find(
           &wm->addonconf->keymaps, km->idname, km->spaceid, km->regionid);
+      wmKeyMap *usermap = WM_keymap_list_find(
+          &U.user_keymaps, km->idname, km->spaceid, km->regionid);
 
-      /* diff */
-      if (defaultmap) {
-        wm_keymap_diff_update(&U.user_keymaps, defaultmap, addonmap, km);
-      }
-    }
-  }
-
-  /* create user key configuration from preset + addon + user preferences */
-  LISTBASE_FOREACH (wmKeyMap *, km, &wm->defaultconf->keymaps) {
-    /* find keymaps */
-    wmKeyMap *defaultmap = wm_keymap_preset(wm, km);
-    wmKeyMap *addonmap = WM_keymap_list_find(
-        &wm->addonconf->keymaps, km->idname, km->spaceid, km->regionid);
-    wmKeyMap *usermap = WM_keymap_list_find(
-        &U.user_keymaps, km->idname, km->spaceid, km->regionid);
+      /* For now only the default map defines modal key-maps,
+       * if we support modal keymaps for 'addonmap', these will need to be enabled too. */
+      wm_user_modal_keymap_set_items(wm, defaultmap);
 
-    /* For now only the default map defines modal key-maps,
-     * if we support modal keymaps for 'addonmap', these will need to be enabled too. */
-    wm_user_modal_keymap_set_items(wm, defaultmap);
+      /* add */
+      wmKeyMap *kmn = wm_keymap_patch_update(
+          &wm->userconf->keymaps, defaultmap, addonmap, usermap);
 
-    /* add */
-    wmKeyMap *kmn = wm_keymap_patch_update(&wm->userconf->keymaps, defaultmap, addonmap, usermap);
+      if (kmn) {
+        kmn->modal_items = km->modal_items;
+        kmn->poll = km->poll;
+        kmn->poll_modal_item = km->poll_modal_item;
+      }
 
-    if (kmn) {
-      kmn->modal_items = km->modal_items;
-      kmn->poll = km->poll;
-      kmn->poll_modal_item = km->poll_modal_item;
+      /* in case of old non-diff keymaps, force extra update to create diffs */
+      compat_update = compat_update || (usermap && !(usermap->flag & KEYMAP_DIFF));
     }
 
-    /* in case of old non-diff keymaps, force extra update to create diffs */
-    compat_update = compat_update || (usermap && !(usermap->flag & KEYMAP_DIFF));
+    wm_keymap_update_flag &= ~WM_KEYMAP_UPDATE_RECONFIGURE;
   }
 
-  wm_keymap_update_flag &= ~WM_KEYMAP_UPDATE_RECONFIGURE;
-
   BLI_assert(wm_keymap_update_flag == 0);
 
   if (compat_update) {



More information about the Bf-blender-cvs mailing list