From 223beb8a826773e2e3ea4c6d7e7d40fde9247d9a Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sat, 2 Apr 2022 18:57:09 +0200 Subject: Multiple focus handling changes --- src/events/Windows.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/events/Windows.cpp') diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 43a3a962..3d50f1f4 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -156,8 +156,10 @@ void Events::listener_unmapWindow(void* owner, void* data) { PWINDOW->hyprListener_setTitleWindow.removeCallback(); } - if (g_pXWaylandManager->getWindowSurface(PWINDOW) == g_pCompositor->m_pLastFocus) + if (PWINDOW == g_pCompositor->m_pLastWindow) { + g_pCompositor->m_pLastWindow = nullptr; g_pCompositor->m_pLastFocus = nullptr; + } PWINDOW->m_bMappedX11 = false; @@ -175,7 +177,7 @@ void Events::listener_unmapWindow(void* owner, void* data) { // refocus on a new window g_pInputManager->refocus(); - + Debug::log(LOG, "Destroying the SubSurface tree of unmapped window %x", PWINDOW); SubsurfaceTree::destroySurfaceTree(PWINDOW->m_pSurfaceTree); PWINDOW->m_pSurfaceTree = nullptr; @@ -192,8 +194,10 @@ void Events::listener_destroyWindow(void* owner, void* data) { Debug::log(LOG, "Window %x destroyed", PWINDOW); - if (g_pXWaylandManager->getWindowSurface(PWINDOW) == g_pCompositor->m_pLastFocus) + if (PWINDOW == g_pCompositor->m_pLastWindow) { + g_pCompositor->m_pLastWindow = nullptr; g_pCompositor->m_pLastFocus = nullptr; + } PWINDOW->hyprListener_mapWindow.removeCallback(); PWINDOW->hyprListener_unmapWindow.removeCallback(); @@ -202,6 +206,7 @@ void Events::listener_destroyWindow(void* owner, void* data) { g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW); if (PWINDOW->m_pSurfaceTree) { + Debug::log(LOG, "Destroying Subsurface tree of %x in destroyWindow", PWINDOW); SubsurfaceTree::destroySurfaceTree(PWINDOW->m_pSurfaceTree); PWINDOW->m_pSurfaceTree = nullptr; } -- cgit v1.2.3