keybinds: suppress up event if down was consumed

Fixes #3000
This commit is contained in:
vaxerski 2023-09-01 22:14:06 +02:00
parent d9292800a2
commit f242f9447b

View file

@ -386,8 +386,7 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const std::string&
Debug::log(LOG, "Keybind handling only locked (inhibitor)"); Debug::log(LOG, "Keybind handling only locked (inhibitor)");
for (auto& k : m_lKeybinds) { for (auto& k : m_lKeybinds) {
if (modmask != k.modmask || (g_pCompositor->m_sSeat.exclusiveClient && !k.locked) || k.submap != m_szCurrentSelectedSubmap || if (modmask != k.modmask || (g_pCompositor->m_sSeat.exclusiveClient && !k.locked) || k.submap != m_szCurrentSelectedSubmap || k.shadowed)
(!pressed && !k.release && k.handler != "pass" && k.handler != "mouse" && k.handler != "global") || k.shadowed)
continue; continue;
if (!key.empty()) { if (!key.empty()) {
@ -413,11 +412,15 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const std::string&
if (k.nonConsuming) if (k.nonConsuming)
continue; continue;
found = true; found = true; // suppress the event
continue;
}
if (k.transparent) if (!pressed && !k.release) {
if (k.nonConsuming)
continue; continue;
found = true; // suppress the event
continue; continue;
} }
@ -1008,7 +1011,7 @@ void CKeybindManager::moveFocusTo(std::string args) {
if (PLASTWINDOW->m_iMonitorID != PWINDOWTOCHANGETO->m_iMonitorID) { if (PLASTWINDOW->m_iMonitorID != PWINDOWTOCHANGETO->m_iMonitorID) {
// event // event
const auto PNEWMON = g_pCompositor->getMonitorFromID(PWINDOWTOCHANGETO->m_iMonitorID); const auto PNEWMON = g_pCompositor->getMonitorFromID(PWINDOWTOCHANGETO->m_iMonitorID);
g_pCompositor->setActiveMonitor(PNEWMON); g_pCompositor->setActiveMonitor(PNEWMON);
} }