diff --git a/src/Compositor.cpp b/src/Compositor.cpp index aa5b3e29..c559ebd3 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -615,16 +615,18 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) { } if (!pWindow || !windowValidMapped(pWindow)) { - if (windowValidMapped(m_pLastWindow)) { - updateWindowAnimatedDecorationValues(m_pLastWindow); + const auto PLASTWINDOW = m_pLastWindow; + m_pLastWindow = nullptr; - if (m_pLastWindow->m_phForeignToplevel) - wlr_foreign_toplevel_handle_v1_set_activated(m_pLastWindow->m_phForeignToplevel, false); + if (windowValidMapped(PLASTWINDOW)) { + updateWindowAnimatedDecorationValues(PLASTWINDOW); + + if (PLASTWINDOW->m_phForeignToplevel) + wlr_foreign_toplevel_handle_v1_set_activated(PLASTWINDOW->m_phForeignToplevel, false); } wlr_seat_keyboard_notify_clear_focus(m_sSeat.seat); - m_pLastWindow = nullptr; m_pLastFocus = nullptr; return; }