summaryrefslogtreecommitdiff
path: root/src/layout/algorithm/tiled
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
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')
-rw-r--r--src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp18
-rw-r--r--src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.hpp4
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
+};