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