summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-08-06 20:57:38 +0200
committervaxerski <vaxry@vaxry.net>2022-08-06 20:57:38 +0200
commit69b8568ccff1cc225c5ad4b341c8a09bdf9f8654 (patch)
treec9311e3ef99a010940015e21672bfbe2b697c3a9 /src/Compositor.cpp
parentccd68049f727a52b59f8a432b132a16e683986e4 (diff)
better foreign toplevel protocol obedience
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 1d1dda08..c0ecb7f1 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -1349,6 +1349,8 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
if (w->m_bIsFloating && w->m_bIsMapped && !w->m_bHidden) {
w->m_vRealPosition = w->m_vRealPosition.vec() - POLDMON->vecPosition + pMonitor->vecPosition;
}
+
+ w->updateToplevel();
}
}
@@ -1541,3 +1543,16 @@ SLayerSurface* CCompositor::getLayerSurfaceFromWlr(wlr_layer_surface_v1* pLS) {
return nullptr;
}
+
+void CCompositor::closeWindow(CWindow* pWindow) {
+ if (pWindow && windowValidMapped(pWindow)) {
+ g_pXWaylandManager->sendCloseWindow(pWindow);
+
+ if (pWindow == m_pLastWindow) {
+ g_pCompositor->m_pLastFocus = nullptr;
+ g_pCompositor->m_pLastWindow = nullptr;
+ g_pEventManager->postEvent(SHyprIPCEvent{"activewindow", ","}); // post an activewindow event to empty, as we are currently unfocused
+ g_pCompositor->focusWindow(g_pCompositor->windowFromCursor());
+ }
+ }
+} \ No newline at end of file