From f9c7c8fdcbd9a6826ebe3c4989ee693a83c96090 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 9 Oct 2025 03:29:44 +0000 Subject: [PATCH] Fix #146670: Disabled key-map items lost when loading old preferences Version patching keymaps was only handling new/changed key-map items. However it's important to version patch removed key-map items so they match the key-map items in the updated key-map and disable them. Regression from [0] which copied the error from [1]. Resolve both by updating all key-map items. Ref !147668 [0]: 5e2b4219965a42fa134aab159fc456e6dbe0372d [1]: 4986f718482b061082936f1f6aa13929741093a2 --- source/blender/blenkernel/BKE_keyconfig.h | 2 ++ source/blender/blenloader/intern/versioning_userdef.cc | 8 ++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/source/blender/blenkernel/BKE_keyconfig.h b/source/blender/blenkernel/BKE_keyconfig.h index 986acb83385..a372288aea0 100644 --- a/source/blender/blenkernel/BKE_keyconfig.h +++ b/source/blender/blenkernel/BKE_keyconfig.h @@ -54,6 +54,8 @@ struct wmKeyConfigFilterItemParams { uint check_diff_item_add : 1; uint check_diff_item_remove : 1; }; +/** Use when all items should be manipulated. */ +#define WM_KEY_CONFIG_FILTER_ITEM_ALL {true, true, true} void BKE_keyconfig_keymap_filter_item(struct wmKeyMap *keymap, const struct wmKeyConfigFilterItemParams *params, diff --git a/source/blender/blenloader/intern/versioning_userdef.cc b/source/blender/blenloader/intern/versioning_userdef.cc index 9bdc36095df..c0bd67798ac 100644 --- a/source/blender/blenloader/intern/versioning_userdef.cc +++ b/source/blender/blenloader/intern/versioning_userdef.cc @@ -1349,9 +1349,7 @@ void blo_do_versions_userdef(UserDef *userdef) } if (!USER_VERSION_ATLEAST(302, 5)) { - wmKeyConfigFilterItemParams params{}; - params.check_item = true; - params.check_diff_item_add = true; + const wmKeyConfigFilterItemParams params = WM_KEY_CONFIG_FILTER_ITEM_ALL; BKE_keyconfig_pref_filter_items(userdef, ¶ms, keymap_item_update_tweak_event, nullptr); } @@ -1609,9 +1607,7 @@ void blo_do_versions_userdef(UserDef *userdef) } if (!USER_VERSION_ATLEAST(405, 11)) { - wmKeyConfigFilterItemParams params{}; - params.check_item = true; - params.check_diff_item_add = true; + const wmKeyConfigFilterItemParams params = WM_KEY_CONFIG_FILTER_ITEM_ALL; BKE_keyconfig_pref_filter_items( userdef, ¶ms,