From 4d498137b22b0691fcf7418d0cfc6c87131509fc Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 27 Mar 2022 19:16:33 +0200 Subject: [PATCH] fix crash --- src/Compositor.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 5405a4f0..39f99b4c 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -321,7 +321,7 @@ SMonitor* CCompositor::getMonitorFromOutput(wlr_output* out) { void CCompositor::focusWindow(CWindow* pWindow) { - if (!pWindow) { + if (!pWindow || !windowValidMapped(pWindow)) { wlr_seat_keyboard_notify_clear_focus(m_sSeat.seat); return; } @@ -337,11 +337,18 @@ void CCompositor::focusSurface(wlr_surface* pSurface) { if (m_sSeat.seat->keyboard_state.focused_surface == pSurface) return; // Don't focus when already focused on this. + if (!pSurface) + return; + // Unfocus last surface if (m_pLastFocus && !wlr_surface_is_xwayland_surface(m_pLastFocus)) g_pXWaylandManager->activateSurface(m_pLastFocus, false); const auto KEYBOARD = wlr_seat_get_keyboard(m_sSeat.seat); + + if (!KEYBOARD) + return; + wlr_seat_keyboard_notify_enter(m_sSeat.seat, pSurface, KEYBOARD->keycodes, KEYBOARD->num_keycodes, &KEYBOARD->modifiers); m_pLastFocus = pSurface;