From 01df3b73d815beaa892849ae7bd4eddc94642dc7 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Thu, 25 Apr 2024 14:32:35 +0100 Subject: shortcuts-inhibitor: move to new impl --- src/managers/KeybindManager.cpp | 11 ++++------- src/managers/KeybindManager.hpp | 1 - src/managers/ProtocolManager.cpp | 3 +++ 3 files changed, 7 insertions(+), 8 deletions(-) (limited to 'src/managers') diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index ad863274..402c567f 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -4,6 +4,7 @@ #include "helpers/VarList.hpp" #include "../config/ConfigValue.hpp" #include "TokenManager.hpp" +#include "../protocols/ShortcutsInhibit.hpp" #include #include @@ -539,13 +540,9 @@ bool CKeybindManager::handleKeybinds(const uint32_t modmask, const SPressedKeyWi static auto PDISABLEINHIBIT = CConfigValue("binds:disable_keybind_grabbing"); - if (!*PDISABLEINHIBIT && !m_lShortcutInhibitors.empty()) { - for (auto& i : m_lShortcutInhibitors) { - if (i.pWlrInhibitor->surface == g_pCompositor->m_pLastFocus) { - Debug::log(LOG, "Keybind handling is disabled due to an inhibitor for surface {:x}", (uintptr_t)i.pWlrInhibitor->surface); - return false; - } - } + if (!*PDISABLEINHIBIT && PROTO::shortcutsInhibit->isInhibited()) { + Debug::log(LOG, "Keybind handling is disabled due to an inhibitor"); + return false; } for (auto& k : m_lKeybinds) { diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp index 450960f5..b0587b7f 100644 --- a/src/managers/KeybindManager.hpp +++ b/src/managers/KeybindManager.hpp @@ -81,7 +81,6 @@ class CKeybindManager { bool m_bGroupsLocked = false; std::list m_lKeybinds; - std::list m_lShortcutInhibitors; private: std::deque m_dPressedKeys; diff --git a/src/managers/ProtocolManager.cpp b/src/managers/ProtocolManager.cpp index 8605e8bd..a10032a0 100644 --- a/src/managers/ProtocolManager.cpp +++ b/src/managers/ProtocolManager.cpp @@ -12,6 +12,7 @@ #include "../protocols/ForeignToplevel.hpp" #include "../protocols/PointerGestures.hpp" #include "../protocols/ForeignToplevelWlr.hpp" +#include "../protocols/ShortcutsInhibit.hpp" #include "tearing-control-v1.hpp" #include "fractional-scale-v1.hpp" @@ -25,6 +26,7 @@ #include "ext-foreign-toplevel-list-v1.hpp" #include "pointer-gestures-unstable-v1.hpp" #include "wlr-foreign-toplevel-management-unstable-v1.hpp" +#include "keyboard-shortcuts-inhibit-unstable-v1.hpp" CProtocolManager::CProtocolManager() { @@ -40,6 +42,7 @@ CProtocolManager::CProtocolManager() { PROTO::foreignToplevel = std::make_unique(&ext_foreign_toplevel_list_v1_interface, 1, "ForeignToplevel"); PROTO::pointerGestures = std::make_unique(&zwp_pointer_gestures_v1_interface, 3, "PointerGestures"); PROTO::foreignToplevelWlr = std::make_unique(&zwlr_foreign_toplevel_manager_v1_interface, 3, "ForeignToplevelWlr"); + PROTO::shortcutsInhibit = std::make_unique(&zwp_keyboard_shortcuts_inhibit_manager_v1_interface, 1, "ShortcutsInhibit"); // Old protocol implementations. // TODO: rewrite them to use hyprwayland-scanner. -- cgit v1.2.3