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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user