diff --git a/src/citymania/cm_hotkeys.cpp b/src/citymania/cm_hotkeys.cpp index 5af9623065..d7c724f539 100644 --- a/src/citymania/cm_hotkeys.cpp +++ b/src/citymania/cm_hotkeys.cpp @@ -64,15 +64,15 @@ std::pair GetEPM() { } void UpdateModKeys(bool shift_pressed, bool ctrl_pressed, bool alt_pressed) { - ModKey key = ModKey::NONE; - if (alt_pressed) key = ModKey::ALT; - if (ctrl_pressed) key = ModKey::CTRL; - if (shift_pressed) key = ModKey::SHIFT; + bool mod_pressed[(size_t)ModKey::END] = {false}; + if (shift_pressed) mod_pressed[(size_t)ModKey::SHIFT] = true; + if (ctrl_pressed) mod_pressed[(size_t)ModKey::CTRL] = true; + if (alt_pressed) mod_pressed[(size_t)ModKey::ALT] = true; bool fn_mod_prev = _fn_mod; bool remove_mod_prev = _remove_mod; - _fn_mod = (_settings_client.gui.cm_fn_mod == key); - _remove_mod = (_settings_client.gui.cm_remove_mod == key); - _estimate_mod = (_settings_client.gui.cm_estimate_mod == key); + _fn_mod = mod_pressed[(size_t)_settings_client.gui.cm_fn_mod]; + _remove_mod = mod_pressed[(size_t)_settings_client.gui.cm_remove_mod]; + _estimate_mod = mod_pressed[(size_t)_settings_client.gui.cm_estimate_mod]; Window *w; if (fn_mod_prev != _fn_mod) { diff --git a/src/citymania/cm_settings.hpp b/src/citymania/cm_settings.hpp index 1b118a86d8..765a535fbc 100644 --- a/src/citymania/cm_settings.hpp +++ b/src/citymania/cm_settings.hpp @@ -13,7 +13,8 @@ enum class ModKey : uint8 { NONE = 0, SHIFT = 1, CTRL = 2, - ALT = 3 + ALT = 3, + END, }; class CBRequirement {