From f8a731b10b653a6450fe7c8beea48db9373b32f8 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 20 Mar 2022 14:36:55 +0100 Subject: focus to layers --- src/events/Events.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/events/Events.cpp') diff --git a/src/events/Events.cpp b/src/events/Events.cpp index 8191f295..4367eb16 100644 --- a/src/events/Events.cpp +++ b/src/events/Events.cpp @@ -183,6 +183,8 @@ void Events::listener_destroyLayerSurface(wl_listener* listener, void* data) { if (layersurface->layerSurface->mapped) layersurface->layerSurface->mapped = 0; + if (layersurface->layerSurface->surface == g_pCompositor->m_pLastFocus) + g_pCompositor->m_pLastFocus = nullptr; wl_list_remove(&layersurface->listen_destroyLayerSurface.link); wl_list_remove(&layersurface->listen_mapLayerSurface.link); @@ -212,6 +214,9 @@ void Events::listener_unmapLayerSurface(wl_listener* listener, void* data) { if (layersurface->layerSurface->mapped) layersurface->layerSurface->mapped = 0; + if (layersurface->layerSurface->surface == g_pCompositor->m_pLastFocus) + g_pCompositor->m_pLastFocus = nullptr; + Debug::log(LOG, "LayerSurface %x unmapped", layersurface); } @@ -477,6 +482,9 @@ void Events::listener_mapWindow(wl_listener* listener, void* data) { void Events::listener_unmapWindow(wl_listener* listener, void* data) { CWindow* PWINDOW = wl_container_of(listener, PWINDOW, listen_unmapWindow); + if (g_pXWaylandManager->getWindowSurface(PWINDOW) == g_pCompositor->m_pLastFocus) + g_pCompositor->m_pLastFocus = nullptr; + g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW); g_pCompositor->removeWindowFromVectorSafe(PWINDOW); @@ -493,6 +501,9 @@ void Events::listener_commitWindow(wl_listener* listener, void* data) { void Events::listener_destroyWindow(wl_listener* listener, void* data) { CWindow* PWINDOW = wl_container_of(listener, PWINDOW, listen_destroyWindow); + if (g_pXWaylandManager->getWindowSurface(PWINDOW) == g_pCompositor->m_pLastFocus) + g_pCompositor->m_pLastFocus = nullptr; + g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW); g_pCompositor->removeWindowFromVectorSafe(PWINDOW); -- cgit v1.2.3