summaryrefslogtreecommitdiff
path: root/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp
diff options
context:
space:
mode:
authorNikolai Nechaev <nikolay_nechaev@mail.ru>2026-03-10 19:04:21 +0900
committerGitHub <noreply@github.com>2026-03-10 10:04:21 +0000
commit8a12d6cf7e3b11ea46e6d76f219b1d1cdde9e797 (patch)
treea0a2b62059f89f45aef0f20616768460748e95fd /src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp
parente32eeb1d454b029a24ca71f410896bf52839085d (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/dwindle/DwindleAlgorithm.cpp')
-rw-r--r--src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp18
1 files changed, 8 insertions, 10 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();
}