diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-27 19:16:33 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-27 19:16:33 +0200 |
| commit | 4d498137b22b0691fcf7418d0cfc6c87131509fc (patch) | |
| tree | 33c1b170c4b637a9eff23f56a64de1e87cc5efa8 /src/Compositor.cpp | |
| parent | ad36a9dc9ed032e6e34c06f78995bca0045f85b0 (diff) | |
fix crash
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
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; |
