diff options
Diffstat (limited to 'source/blender/blenloader/intern/versioning_userdef.c')
-rw-r--r-- | source/blender/blenloader/intern/versioning_userdef.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c index b14b17cbd8f..5279ed19343 100644 --- a/source/blender/blenloader/intern/versioning_userdef.c +++ b/source/blender/blenloader/intern/versioning_userdef.c @@ -36,10 +36,14 @@ #include "BKE_addon.h" #include "BKE_colorband.h" +#include "BKE_idprop.h" #include "BKE_main.h" +#include "BKE_keyconfig.h" #include "BLO_readfile.h" /* Own include. */ +#include "wm_event_types.h" + /* Disallow access to global userdef. */ #define U (_error_) @@ -92,6 +96,29 @@ static void do_versions_theme(UserDef *userdef, bTheme *btheme) #undef USER_VERSION_ATLEAST } +/* UserDef.flag */ +#define USER_LMOUSESELECT (1 << 14) /* deprecated */ + +static void do_version_select_mouse(UserDef *userdef, wmKeyMapItem *kmi) +{ + /* Remove select/action mouse from user defined keymaps. */ + enum { + ACTIONMOUSE = 0x0005, + SELECTMOUSE = 0x0006, + EVT_TWEAK_A = 0x5005, + EVT_TWEAK_S = 0x5006, + }; + const bool left = (userdef->flag & USER_LMOUSESELECT) != 0; + + switch (kmi->type) { + case SELECTMOUSE: kmi->type = (left) ? LEFTMOUSE : RIGHTMOUSE; break; + case ACTIONMOUSE: kmi->type = (left) ? RIGHTMOUSE : LEFTMOUSE; break; + case EVT_TWEAK_S: kmi->type = (left) ? EVT_TWEAK_L : EVT_TWEAK_R; break; + case EVT_TWEAK_A: kmi->type = (left) ? EVT_TWEAK_R : EVT_TWEAK_L; break; + default: break; + } +} + /* patching UserDef struct and Themes */ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef) { @@ -353,6 +380,32 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef) } } + if (!USER_VERSION_ATLEAST(280, 31)) { + /* Remove select/action mouse from user defined keymaps. */ + for (wmKeyMap *keymap = userdef->user_keymaps.first; keymap; keymap = keymap->next) { + for (wmKeyMapDiffItem *kmdi = keymap->diff_items.first; kmdi; kmdi = kmdi->next) { + if (kmdi->remove_item) { + do_version_select_mouse(userdef, kmdi->remove_item); + } + if (kmdi->add_item) { + do_version_select_mouse(userdef, kmdi->add_item); + } + } + + for (wmKeyMapItem *kmi = keymap->items.first; kmi; kmi = kmi->next) { + do_version_select_mouse(userdef, kmi); + } + } + } + + if (!USER_VERSION_ATLEAST(280, 32)) { + if ((userdef->flag & USER_LMOUSESELECT) ) { + userdef->flag &= ~USER_LMOUSESELECT; + wmKeyConfigPref *kpt = BKE_keyconfig_pref_ensure(userdef, WM_KEYCONFIG_STR_DEFAULT); + IDP_AddToGroup(kpt->prop, IDP_New(IDP_INT, &(IDPropertyTemplate){ .i = 0, }, "select_mouse")); + } + } + /** * Include next version bump. */ @@ -375,3 +428,5 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef) #undef USER_VERSION_ATLEAST } + +#undef USER_LMOUSESELECT |