diff options
| author | Nikolai Nechaev <nikolay_nechaev@mail.ru> | 2026-03-10 19:04:21 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-10 10:04:21 +0000 |
| commit | 8a12d6cf7e3b11ea46e6d76f219b1d1cdde9e797 (patch) | |
| tree | a0a2b62059f89f45aef0f20616768460748e95fd /src/layout/algorithm/tiled | |
| parent | e32eeb1d454b029a24ca71f410896bf52839085d (diff) | |
algo/dwindle: Respect `force_split` when moving windows to workspaces (#13038)
Respect `dwindle:force_split` not only when mapping new windows,
but also when moving windows to workspaces.
Fixes #13009.
Diffstat (limited to 'src/layout/algorithm/tiled')
| -rw-r--r-- | src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp | 18 | ||||
| -rw-r--r-- | src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.hpp | 4 |
2 files changed, 10 insertions, 12 deletions
diff --git a/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp b/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp index 4c9622c3..531b54d8 100644 --- a/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp +++ b/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp @@ -71,7 +71,7 @@ void CDwindleAlgorithm::newTarget(SP<ITarget> target) { addTarget(target); } -void CDwindleAlgorithm::addTarget(SP<ITarget> target, bool newTarget) { +void CDwindleAlgorithm::addTarget(SP<ITarget> target) { const auto WORK_AREA = m_parent->space()->workArea(); const auto PNODE = m_dwindleNodesData.emplace_back(makeShared<SDwindleNodeData>()); @@ -215,7 +215,7 @@ void CDwindleAlgorithm::addTarget(SP<ITarget> target, bool newTarget) { NEWPARENT->children[1] = OPENINGON; } } - } else if (*PFORCESPLIT == 0 || !newTarget || m_overrideFocalPoint) { + } else if (*PFORCESPLIT == 0 || m_overrideFocalPoint) { if ((SIDEBYSIDE && MOUSECOORDS.x < NEWPARENT->box.x + (NEWPARENT->box.w / 2.F)) || (!SIDEBYSIDE && MOUSECOORDS.y < NEWPARENT->box.y + (NEWPARENT->box.h / 2.F))) { // we are hovering over the first node, make PNODE first. NEWPARENT->children[1] = OPENINGON; @@ -225,14 +225,12 @@ void CDwindleAlgorithm::addTarget(SP<ITarget> target, bool newTarget) { NEWPARENT->children[0] = OPENINGON; NEWPARENT->children[1] = PNODE; } + } else if (*PFORCESPLIT == 1) { + NEWPARENT->children[1] = OPENINGON; + NEWPARENT->children[0] = PNODE; } else { - if (*PFORCESPLIT == 1) { - NEWPARENT->children[1] = OPENINGON; - NEWPARENT->children[0] = PNODE; - } else { - NEWPARENT->children[0] = OPENINGON; - NEWPARENT->children[1] = PNODE; - } + NEWPARENT->children[0] = OPENINGON; + NEWPARENT->children[1] = PNODE; } // split in favor of a specific window @@ -268,7 +266,7 @@ void CDwindleAlgorithm::addTarget(SP<ITarget> target, bool newTarget) { void CDwindleAlgorithm::movedTarget(SP<ITarget> target, std::optional<Vector2D> focalPoint) { m_overrideFocalPoint = focalPoint; - addTarget(target, false); + addTarget(target); m_overrideFocalPoint.reset(); } diff --git a/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.hpp b/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.hpp index 41cbf8bb..043f8738 100644 --- a/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.hpp +++ b/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.hpp @@ -39,7 +39,7 @@ namespace Layout::Tiled { std::optional<Vector2D> m_overrideFocalPoint; // for onWindowCreatedTiling. - void addTarget(SP<ITarget> target, bool newTarget = true); + void addTarget(SP<ITarget> target); void calculateWorkspace(); SP<SDwindleNodeData> getNodeFromTarget(SP<ITarget>); SP<SDwindleNodeData> getNodeFromWindow(PHLWINDOW w); @@ -55,4 +55,4 @@ namespace Layout::Tiled { Math::eDirection m_overrideDirection = Math::DIRECTION_DEFAULT; }; -};
\ No newline at end of file +}; |
