diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-09-14 17:30:16 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-09-14 17:30:16 +0200 |
| commit | 037d4ed422bb3bb34617f444a360a8abab6863cb (patch) | |
| tree | c6ba498a459e88df756c60fd3f9a6e78b40094fc /src/layout/DwindleLayout.cpp | |
| parent | 9f82278d65ab0b0434c14c0dbbd6556a40232f36 (diff) | |
handle multi-ws swaps in layouts
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
| -rw-r--r-- | src/layout/DwindleLayout.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index 2f9b00fa..0d5cfde3 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -1008,8 +1008,8 @@ void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) { return; if (PNODE->workspaceID != PNODE2->workspaceID) { - Debug::log(ERR, "Dwindle: Rejecting a swap between workspaces"); - return; + std::swap(pWindow2->m_iMonitorID, pWindow->m_iMonitorID); + std::swap(pWindow2->m_iWorkspaceID, pWindow->m_iWorkspaceID); } // swap the windows and recalc @@ -1018,6 +1018,9 @@ void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) { // recalc the workspace getMasterNodeOnWorkspace(PNODE->workspaceID)->recalcSizePosRecursive(); + + if (PNODE2->workspaceID != PNODE->workspaceID) + getMasterNodeOnWorkspace(PNODE2->workspaceID)->recalcSizePosRecursive(); } void CHyprDwindleLayout::alterSplitRatioBy(CWindow* pWindow, float ratio) { |
