diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-03-14 10:03:16 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-03-14 10:08:05 +0300 |
commit | 2919c4bf9df4fc1cf6a10aec152411b02598dc9b (patch) | |
tree | 9cb163fed2d5a9f54a6a174b98a8d2ffbfdb0d49 /source/blender/windowmanager/intern/wm_keymap.c | |
parent | d2f4fc8275d4df6e585815757c69c762412bfa65 (diff) |
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.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_keymap.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_keymap.c | 93 |
1 files changed, 46 insertions, 47 deletions
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) { |