summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-27 19:16:33 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-27 19:16:33 +0200
commit4d498137b22b0691fcf7418d0cfc6c87131509fc (patch)
tree33c1b170c4b637a9eff23f56a64de1e87cc5efa8 /src/Compositor.cpp
parentad36a9dc9ed032e6e34c06f78995bca0045f85b0 (diff)
fix crash
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp9
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;