From ec511316d27ca10e46698d97bdffcd19e5a61076 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 25 Mar 2025 12:14:27 +1100 Subject: [PATCH] Cleanup: minor changes to wmKeyMapItem modifier comparisons Some of the existing logic checked that modifiers were KM_MOD_HELD, other logic checked the value wasn't KM_NOTHING or KM_ANY. Simplify checks by comparing against KM_MOD_HELD in all cases as this won't be set to other values. --- .../editors/interface/interface_icons.cc | 8 ++++---- .../editors/interface/interface_utils.cc | 2 +- source/blender/editors/screen/area.cc | 8 ++++---- source/blender/makesrna/intern/rna_wm.cc | 12 ++++++------ .../windowmanager/intern/wm_event_system.cc | 17 ++++++++--------- 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/source/blender/editors/interface/interface_icons.cc b/source/blender/editors/interface/interface_icons.cc index d4bc1dd8a4d..fa10900b961 100644 --- a/source/blender/editors/interface/interface_icons.cc +++ b/source/blender/editors/interface/interface_icons.cc @@ -647,16 +647,16 @@ int UI_icon_from_keymap_item(const wmKeyMapItem *kmi, int r_icon_mod[4]) if (r_icon_mod) { memset(r_icon_mod, 0x0, sizeof(int[4])); int i = 0; - if (!ELEM(kmi->ctrl, KM_NOTHING, KM_ANY)) { + if (kmi->ctrl == KM_MOD_HELD) { r_icon_mod[i++] = ICON_EVENT_CTRL; } - if (!ELEM(kmi->alt, KM_NOTHING, KM_ANY)) { + if (kmi->alt == KM_MOD_HELD) { r_icon_mod[i++] = ICON_EVENT_ALT; } - if (!ELEM(kmi->shift, KM_NOTHING, KM_ANY)) { + if (kmi->shift == KM_MOD_HELD) { r_icon_mod[i++] = ICON_EVENT_SHIFT; } - if (!ELEM(kmi->oskey, KM_NOTHING, KM_ANY)) { + if (kmi->oskey == KM_MOD_HELD) { r_icon_mod[i++] = ICON_EVENT_OS; } } diff --git a/source/blender/editors/interface/interface_utils.cc b/source/blender/editors/interface/interface_utils.cc index ae3cf35c448..cce5cb9be94 100644 --- a/source/blender/editors/interface/interface_utils.cc +++ b/source/blender/editors/interface/interface_utils.cc @@ -1130,7 +1130,7 @@ std::optional UI_key_event_operator_string(const bContext *C, if ((event_val != KM_NOTHING) && (event_type != KM_NOTHING)) { return WM_keymap_item_raw_to_string( - false, false, false, false, 0, event_val, event_type, false); + KM_NOTHING, KM_NOTHING, KM_NOTHING, KM_NOTHING, 0, event_val, event_type, false); } return std::nullopt; diff --git a/source/blender/editors/screen/area.cc b/source/blender/editors/screen/area.cc index 7f3a98037b6..1a80b1e0255 100644 --- a/source/blender/editors/screen/area.cc +++ b/source/blender/editors/screen/area.cc @@ -953,16 +953,16 @@ void WorkspaceStatus::opmodal(std::string text, #else int icon = UI_icon_from_event_type(kmi->type, kmi->val); #endif - if (!ELEM(kmi->shift, KM_NOTHING, KM_ANY)) { + if (kmi->shift == KM_MOD_HELD) { ed_workspace_status_item(workspace_, {}, ICON_EVENT_SHIFT, 0.0f, inverted); } - if (!ELEM(kmi->ctrl, KM_NOTHING, KM_ANY)) { + if (kmi->ctrl == KM_MOD_HELD) { ed_workspace_status_item(workspace_, {}, ICON_EVENT_CTRL, 0.0f, inverted); } - if (!ELEM(kmi->alt, KM_NOTHING, KM_ANY)) { + if (kmi->alt == KM_MOD_HELD) { ed_workspace_status_item(workspace_, {}, ICON_EVENT_ALT, 0.0f, inverted); } - if (!ELEM(kmi->oskey, KM_NOTHING, KM_ANY)) { + if (kmi->oskey == KM_MOD_HELD) { ed_workspace_status_item(workspace_, {}, ICON_EVENT_OS, 0.0f, inverted); } ed_workspace_status_icon_item(workspace_, icon, inverted); diff --git a/source/blender/makesrna/intern/rna_wm.cc b/source/blender/makesrna/intern/rna_wm.cc index bbf64fbc949..c7fac166bbd 100644 --- a/source/blender/makesrna/intern/rna_wm.cc +++ b/source/blender/makesrna/intern/rna_wm.cc @@ -1137,10 +1137,10 @@ static bool rna_KeyMapItem_any_get(PointerRNA *ptr) wmKeyMapItem *kmi = (wmKeyMapItem *)ptr->data; if (kmi->shift == KM_ANY && kmi->ctrl == KM_ANY && kmi->alt == KM_ANY && kmi->oskey == KM_ANY) { - return 1; + return true; } else { - return 0; + return false; } } @@ -1159,25 +1159,25 @@ static void rna_KeyMapItem_any_set(PointerRNA *ptr, bool value) static bool rna_KeyMapItem_shift_get(PointerRNA *ptr) { wmKeyMapItem *kmi = (wmKeyMapItem *)ptr->data; - return kmi->shift != 0; + return kmi->shift != KM_NOTHING; } static bool rna_KeyMapItem_ctrl_get(PointerRNA *ptr) { wmKeyMapItem *kmi = (wmKeyMapItem *)ptr->data; - return kmi->ctrl != 0; + return kmi->ctrl != KM_NOTHING; } static bool rna_KeyMapItem_alt_get(PointerRNA *ptr) { wmKeyMapItem *kmi = (wmKeyMapItem *)ptr->data; - return kmi->alt != 0; + return kmi->alt != KM_NOTHING; } static bool rna_KeyMapItem_oskey_get(PointerRNA *ptr) { wmKeyMapItem *kmi = (wmKeyMapItem *)ptr->data; - return kmi->oskey != 0; + return kmi->oskey != KM_NOTHING; } static PointerRNA rna_WindowManager_active_keyconfig_get(PointerRNA *ptr) diff --git a/source/blender/windowmanager/intern/wm_event_system.cc b/source/blender/windowmanager/intern/wm_event_system.cc index 1320ea82d2c..3f7fea53e3e 100644 --- a/source/blender/windowmanager/intern/wm_event_system.cc +++ b/source/blender/windowmanager/intern/wm_event_system.cc @@ -2374,27 +2374,26 @@ BLI_INLINE bool wm_eventmatch(const wmEvent *winevent, const wmKeyMapItem *kmi) /* Account for rare case of when these keys are used as the 'type' not as modifiers. */ if (kmi->shift != KM_ANY) { - const bool shift = (winevent->modifier & KM_SHIFT) != 0; - if ((shift != bool(kmi->shift)) && !ELEM(winevent->type, EVT_LEFTSHIFTKEY, EVT_RIGHTSHIFTKEY)) - { + const int8_t shift = (winevent->modifier & KM_SHIFT) ? KM_MOD_HELD : KM_NOTHING; + if ((shift != kmi->shift) && !ELEM(winevent->type, EVT_LEFTSHIFTKEY, EVT_RIGHTSHIFTKEY)) { return false; } } if (kmi->ctrl != KM_ANY) { - const bool ctrl = (winevent->modifier & KM_CTRL) != 0; - if (ctrl != bool(kmi->ctrl) && !ELEM(winevent->type, EVT_LEFTCTRLKEY, EVT_RIGHTCTRLKEY)) { + const int8_t ctrl = (winevent->modifier & KM_CTRL) ? KM_MOD_HELD : KM_NOTHING; + if ((ctrl != kmi->ctrl) && !ELEM(winevent->type, EVT_LEFTCTRLKEY, EVT_RIGHTCTRLKEY)) { return false; } } if (kmi->alt != KM_ANY) { - const bool alt = (winevent->modifier & KM_ALT) != 0; - if (alt != bool(kmi->alt) && !ELEM(winevent->type, EVT_LEFTALTKEY, EVT_RIGHTALTKEY)) { + const int8_t alt = (winevent->modifier & KM_ALT) ? KM_MOD_HELD : KM_NOTHING; + if ((alt != kmi->alt) && !ELEM(winevent->type, EVT_LEFTALTKEY, EVT_RIGHTALTKEY)) { return false; } } if (kmi->oskey != KM_ANY) { - const bool oskey = (winevent->modifier & KM_OSKEY) != 0; - if ((oskey != bool(kmi->oskey)) && (winevent->type != EVT_OSKEY)) { + const int8_t oskey = (winevent->modifier & KM_OSKEY) ? KM_MOD_HELD : KM_NOTHING; + if ((oskey != kmi->oskey) && (winevent->type != EVT_OSKEY)) { return false; } }