keybinds: avoid sending release on suppressed press

This commit is contained in:
vaxerski 2023-04-10 00:56:01 +01:00
parent f3909cf2bf
commit a1b1480c21

View file

@ -352,8 +352,7 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const std::string&
} }
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()) {
@ -382,6 +381,11 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const std::string&
return true; return true;
} }
if (!pressed && !k.release && k.handler != "pass" && k.handler != "mouse" && k.handler != "global") {
found = true; // avoid sending a release event
continue;
}
const auto DISPATCHER = m_mDispatchers.find(k.mouse ? "mouse" : k.handler); const auto DISPATCHER = m_mDispatchers.find(k.mouse ? "mouse" : k.handler);
// Should never happen, as we check in the ConfigManager, but oh well // Should never happen, as we check in the ConfigManager, but oh well
@ -1927,7 +1931,7 @@ void CKeybindManager::toggleOpaque(std::string unused) {
if (!PWINDOW) if (!PWINDOW)
return; return;
PWINDOW->m_sAdditionalConfigData.forceOpaque = !PWINDOW->m_sAdditionalConfigData.forceOpaque; PWINDOW->m_sAdditionalConfigData.forceOpaque = !PWINDOW->m_sAdditionalConfigData.forceOpaque;
PWINDOW->m_sAdditionalConfigData.forceOpaqueOverridden = true; PWINDOW->m_sAdditionalConfigData.forceOpaqueOverridden = true;
g_pHyprRenderer->damageWindow(PWINDOW); g_pHyprRenderer->damageWindow(PWINDOW);