diff options
| author | outfoxxed <outfoxxed@outfoxxed.me> | 2025-06-26 09:32:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-26 18:32:44 +0200 |
| commit | 3bbdf9dc5ad2851f5d9f317362fc16705e4fd990 (patch) | |
| tree | 025d7a25435925b235f2e94d18e31931b622c0c0 /src/Compositor.cpp | |
| parent | 1f337a7a5e22ec45a77e275ce2e6ca165b298358 (diff) | |
protocols: add ext-workspace implementation (#10818)
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 14 |
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); |
