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.
This commit is contained in:
Campbell Barton
2025-03-25 12:14:27 +11:00
parent 93bf29a851
commit ec511316d2
5 changed files with 23 additions and 24 deletions

View File

@@ -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;
}
}

View File

@@ -1130,7 +1130,7 @@ std::optional<std::string> 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;

View File

@@ -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);

View File

@@ -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)

View File

@@ -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;
}
}