From 7ae87a233c7c2c9c010f947f5d15f2968d03433b Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Mon, 18 Apr 2022 17:16:01 +0200 Subject: Inhibit fixes --- src/Compositor.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/Compositor.cpp') diff --git a/src/Compositor.cpp b/src/Compositor.cpp index a6bd140b..f4da7caf 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -367,6 +367,11 @@ SMonitor* CCompositor::getMonitorFromOutput(wlr_output* out) { void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) { + if (g_pCompositor->m_sSeat.exclusiveClient) { + Debug::log(LOG, "Disallowing setting focus to a window due to there being an active input inhibitor layer."); + return; + } + if (!pWindow || !windowValidMapped(pWindow)) { wlr_seat_keyboard_notify_clear_focus(m_sSeat.seat); return; @@ -394,6 +399,7 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) { } void CCompositor::focusSurface(wlr_surface* pSurface, CWindow* pWindowOwner) { + if (m_sSeat.seat->keyboard_state.focused_surface == pSurface || (pWindowOwner && m_sSeat.seat->keyboard_state.focused_surface == g_pXWaylandManager->getWindowSurface(pWindowOwner))) return; // Don't focus when already focused on this. -- cgit v1.2.3