diff options
| author | vaxerski <vaxry@vaxry.net> | 2022-09-19 19:04:48 +0100 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2022-09-19 19:04:48 +0100 |
| commit | c24b45671abe1f768e9b5e0a35930ad76e2d8bcc (patch) | |
| tree | 24ac1b68bb8fc8c7cc37fb45aa17551270183026 /src/config/ConfigManager.cpp | |
| parent | 85c7aaf15529dbff5af3460c099bcba2742b7652 (diff) | |
mouse binds overhaul
Diffstat (limited to 'src/config/ConfigManager.cpp')
| -rw-r--r-- | src/config/ConfigManager.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 7df288fe..94a81458 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -658,6 +658,7 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v bool locked = false; bool release = false; bool repeat = false; + bool mouse = false; const auto ARGS = command.substr(4); for (auto& arg : ARGS) { @@ -667,6 +668,8 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v release = true; } else if (arg == 'e') { repeat = true; + } else if (arg == 'm') { + mouse = true; } else { parseError = "bind: invalid flag"; return; @@ -678,6 +681,11 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v return; } + if (mouse && (repeat || release || locked)) { + parseError = "flag m is exclusive"; + return; + } + auto valueCopy = value; const auto MOD = g_pKeybindManager->stringToModMask(valueCopy.substr(0, valueCopy.find_first_of(","))); @@ -687,10 +695,13 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v const auto KEY = valueCopy.substr(0, valueCopy.find_first_of(",")); valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1); - const auto HANDLER = valueCopy.substr(0, valueCopy.find_first_of(",")); + auto HANDLER = valueCopy.substr(0, valueCopy.find_first_of(",")); valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1); - const auto COMMAND = valueCopy; + const auto COMMAND = mouse ? HANDLER : valueCopy; + + if (mouse) + HANDLER = "mouse"; const auto DISPATCHER = g_pKeybindManager->m_mDispatchers.find(HANDLER); @@ -713,11 +724,10 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v if (KEY != "") { if (isNumber(KEY) && std::stoi(KEY) > 9) - g_pKeybindManager->addKeybind(SKeybind{"", std::stoi(KEY), MOD, HANDLER, COMMAND, locked, m_szCurrentSubmap, release, repeat}); + g_pKeybindManager->addKeybind(SKeybind{"", std::stoi(KEY), MOD, HANDLER, COMMAND, locked, m_szCurrentSubmap, release, repeat, mouse}); else - g_pKeybindManager->addKeybind(SKeybind{KEY, -1, MOD, HANDLER, COMMAND, locked, m_szCurrentSubmap, release, repeat}); + g_pKeybindManager->addKeybind(SKeybind{KEY, -1, MOD, HANDLER, COMMAND, locked, m_szCurrentSubmap, release, repeat, mouse}); } - } void CConfigManager::handleUnbind(const std::string& command, const std::string& value) { |
