summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authoroutfoxxed <outfoxxed@outfoxxed.me>2025-06-26 09:32:44 -0700
committerGitHub <noreply@github.com>2025-06-26 18:32:44 +0200
commit3bbdf9dc5ad2851f5d9f317362fc16705e4fd990 (patch)
tree025d7a25435925b235f2e94d18e31931b622c0c0 /src/Compositor.cpp
parent1f337a7a5e22ec45a77e275ce2e6ca165b298358 (diff)
protocols: add ext-workspace implementation (#10818)
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 0ed0b761..64583b1c 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -1972,7 +1972,7 @@ void CCompositor::swapActiveWorkspaces(PHLMONITOR pMonitorA, PHLMONITOR pMonitor
const auto PWORKSPACEB = pMonitorB->m_activeWorkspace;
PWORKSPACEA->m_monitor = pMonitorB;
- PWORKSPACEA->moveToMonitor(pMonitorB->m_id);
+ PWORKSPACEA->m_events.monitorChange.emit();
for (auto const& w : m_windows) {
if (w->m_workspace == PWORKSPACEA) {
@@ -1997,7 +1997,7 @@ void CCompositor::swapActiveWorkspaces(PHLMONITOR pMonitorA, PHLMONITOR pMonitor
}
PWORKSPACEB->m_monitor = pMonitorA;
- PWORKSPACEB->moveToMonitor(pMonitorA->m_id);
+ PWORKSPACEB->m_events.monitorChange.emit();
for (auto const& w : m_windows) {
if (w->m_workspace == PWORKSPACEB) {
@@ -2177,7 +2177,7 @@ void CCompositor::moveWorkspaceToMonitor(PHLWORKSPACE pWorkspace, PHLMONITOR pMo
// move the workspace
pWorkspace->m_monitor = pMonitor;
- pWorkspace->moveToMonitor(pMonitor->m_id);
+ pWorkspace->m_events.monitorChange.emit();
for (auto const& w : m_windows) {
if (w->m_workspace == pWorkspace) {
@@ -2221,7 +2221,15 @@ void CCompositor::moveWorkspaceToMonitor(PHLWORKSPACE pWorkspace, PHLMONITOR pMo
pMonitor->setSpecialWorkspace(nullptr);
setActiveMonitor(pMonitor);
+
+ auto oldWorkspace = pMonitor->m_activeWorkspace;
pMonitor->m_activeWorkspace = pWorkspace;
+
+ if (oldWorkspace)
+ oldWorkspace->m_events.activeChange.emit();
+
+ pWorkspace->m_events.activeChange.emit();
+
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitor->m_id);
pWorkspace->startAnim(true, true, true);