diff options
| author | MichaĆ Lewandowski <49685661+FakeMichau@users.noreply.github.com> | 2023-10-09 13:28:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-09 12:28:58 +0100 |
| commit | 7f8e0a131883ffa44ce85b2353873c2257aebbf7 (patch) | |
| tree | 18b71795c62151de9a5c5f8cd98ce90f354a3bcd /src/layout/DwindleLayout.cpp | |
| parent | 499df49f7b28f9e3be9b1c53843fd5c465dec60b (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.cpp | 17 |
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); |
