summaryrefslogtreecommitdiff
path: root/src/layout/DwindleLayout.cpp
diff options
context:
space:
mode:
authorMichaƂ Lewandowski <49685661+FakeMichau@users.noreply.github.com>2023-10-09 13:28:58 +0200
committerGitHub <noreply@github.com>2023-10-09 12:28:58 +0100
commit7f8e0a131883ffa44ce85b2353873c2257aebbf7 (patch)
tree18b71795c62151de9a5c5f8cd98ce90f354a3bcd /src/layout/DwindleLayout.cpp
parent499df49f7b28f9e3be9b1c53843fd5c465dec60b (diff)
dwindle: Avoid rounding errors in window position (#3524)
* Avoid rounding errors in window position * Fix naming scheme * Fix unwanted window movement
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
-rw-r--r--src/layout/DwindleLayout.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp
index 1ce47d96..a0482ba8 100644
--- a/src/layout/DwindleLayout.cpp
+++ b/src/layout/DwindleLayout.cpp
@@ -4,9 +4,6 @@
void SDwindleNodeData::recalcSizePosRecursive(bool force, bool horizontalOverride, bool verticalOverride) {
if (children[0]) {
-
- const auto REVERSESPLITRATIO = 2.f - splitRatio;
-
static auto* const PSMARTSPLIT = &g_pConfigManager->getConfigValuePtr("dwindle:smart_split")->intValue;
static auto* const PPRESERVESPLIT = &g_pConfigManager->getConfigValuePtr("dwindle:preserve_split")->intValue;
static auto* const PFLMULT = &g_pConfigManager->getConfigValuePtr("dwindle:split_width_multiplier")->floatValue;
@@ -24,16 +21,18 @@ void SDwindleNodeData::recalcSizePosRecursive(bool force, bool horizontalOverrid
if (SPLITSIDE) {
// split left/right
+ int const FIRSTSIZE = std::round(size.x / 2 * splitRatio);
children[0]->position = position;
- children[0]->size = Vector2D(size.x / 2.f * splitRatio, size.y);
- children[1]->position = Vector2D(position.x + size.x / 2.f * splitRatio, position.y);
- children[1]->size = Vector2D(size.x / 2.f * REVERSESPLITRATIO, size.y);
+ children[0]->size = Vector2D(FIRSTSIZE, size.y);
+ children[1]->position = Vector2D(position.x + FIRSTSIZE, position.y);
+ children[1]->size = Vector2D(size.x - FIRSTSIZE, size.y);
} else {
// split top/bottom
+ int const FIRSTSIZE = std::round(size.y / 2 * splitRatio);
children[0]->position = position;
- children[0]->size = Vector2D(size.x, size.y / 2.f * splitRatio);
- children[1]->position = Vector2D(position.x, position.y + size.y / 2.f * splitRatio);
- children[1]->size = Vector2D(size.x, size.y / 2.f * REVERSESPLITRATIO);
+ children[0]->size = Vector2D(size.x, FIRSTSIZE);
+ children[1]->position = Vector2D(position.x, position.y + FIRSTSIZE);
+ children[1]->size = Vector2D(size.x, size.y - FIRSTSIZE);
}
children[0]->recalcSizePosRecursive(force);