Skip to content

Commit edc3115

Browse files
committed
dwindle: Revert rework split logic to be fully gap-aware (#12047)
This reverts commit 151b5f6. Fixes #12380
1 parent 37fe7b2 commit edc3115

File tree

4 files changed

+39
-214
lines changed

4 files changed

+39
-214
lines changed

hyprtester/src/tests/main/window.cpp

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -152,40 +152,22 @@ static bool test() {
152152

153153
NLog::log("{}Testing window split ratios", Colors::YELLOW);
154154
{
155-
const double INITIAL_RATIO = 1.25;
156-
const int GAPSIN = 5;
157-
const int GAPSOUT = 20;
158-
const int BORDERSIZE = 2;
159-
const int BORDERS = BORDERSIZE * 2;
160-
const int MONITOR_W = 1920;
161-
const int MONITOR_H = 1080;
162-
163-
const float totalAvailableHeight = MONITOR_H - (GAPSOUT * 2);
164-
const int HEIGHT = std::round(totalAvailableHeight) - BORDERS;
165-
const float availableWidthForSplit = MONITOR_W - (GAPSOUT * 2) - GAPSIN;
166-
167-
auto calculateFinalWidth = [&](double boxWidth, bool isLeftWindow) {
168-
double gapLeft = isLeftWindow ? GAPSOUT : GAPSIN;
169-
double gapRight = isLeftWindow ? GAPSIN : GAPSOUT;
170-
return std::round(boxWidth - gapLeft - gapRight - BORDERS);
171-
};
172-
173-
double geomBoxWidthA_R1 = (availableWidthForSplit * INITIAL_RATIO / 2.0) + GAPSOUT + (GAPSIN / 2.0);
174-
double geomBoxWidthB_R1 = MONITOR_W - geomBoxWidthA_R1;
175-
const int WIDTH1 = calculateFinalWidth(geomBoxWidthB_R1, false);
176-
177-
const double INVERTED_RATIO = 0.75;
178-
double geomBoxWidthA_R2 = (availableWidthForSplit * INVERTED_RATIO / 2.0) + GAPSOUT + (GAPSIN / 2.0);
179-
double geomBoxWidthB_R2 = MONITOR_W - geomBoxWidthA_R2;
180-
const int WIDTH2 = calculateFinalWidth(geomBoxWidthB_R2, false);
181-
const int WIDTH_A_FINAL = calculateFinalWidth(geomBoxWidthA_R2, true);
155+
const double RATIO = 1.25;
156+
const double PERCENT = RATIO / 2.0 * 100.0;
157+
const int GAPSIN = 5;
158+
const int GAPSOUT = 20;
159+
const int BORDERS = 2 * 2;
160+
const int WTRIM = BORDERS + GAPSIN + GAPSOUT;
161+
const int HEIGHT = 1080 - (BORDERS + (GAPSOUT * 2));
162+
const int WIDTH1 = std::round(1920.0 / 2.0 * (2 - RATIO)) - WTRIM;
163+
const int WIDTH2 = std::round(1920.0 / 2.0 * RATIO) - WTRIM;
182164

183165
OK(getFromSocket("/keyword dwindle:default_split_ratio 1.25"));
184166

185167
if (!spawnKitty("kitty_B"))
186168
return false;
187169

188-
NLog::log("{}Expecting kitty_B size: {},{}", Colors::YELLOW, WIDTH1, HEIGHT);
170+
NLog::log("{}Expecting kitty_B to take up roughly {}% of screen width", Colors::YELLOW, 100 - PERCENT);
189171
EXPECT_CONTAINS(getFromSocket("/activewindow"), std::format("size: {},{}", WIDTH1, HEIGHT));
190172

191173
OK(getFromSocket("/dispatch killwindow activewindow"));
@@ -197,12 +179,12 @@ static bool test() {
197179
if (!spawnKitty("kitty_B"))
198180
return false;
199181

200-
NLog::log("{}Expecting kitty_B size: {},{}", Colors::YELLOW, WIDTH2, HEIGHT);
182+
NLog::log("{}Expecting kitty_B to take up roughly {}% of screen width", Colors::YELLOW, PERCENT);
201183
EXPECT_CONTAINS(getFromSocket("/activewindow"), std::format("size: {},{}", WIDTH2, HEIGHT));
202184

203185
OK(getFromSocket("/dispatch focuswindow class:kitty_A"));
204-
NLog::log("{}Expecting kitty_A size: {},{}", Colors::YELLOW, WIDTH_A_FINAL, HEIGHT);
205-
EXPECT_CONTAINS(getFromSocket("/activewindow"), std::format("size: {},{}", WIDTH_A_FINAL, HEIGHT));
186+
NLog::log("{}Expecting kitty_A to have the same width as the previous kitty_B", Colors::YELLOW);
187+
EXPECT_CONTAINS(getFromSocket("/activewindow"), std::format("size: {},{}", WIDTH1, HEIGHT));
206188

207189
OK(getFromSocket("/keyword dwindle:default_split_ratio 1"));
208190
}

hyprtester/src/tests/main/workspaces.cpp

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include <chrono>
77
#include <hyprutils/os/Process.hpp>
88
#include <hyprutils/memory/WeakPtr.hpp>
9-
#include <hyprutils/utils/ScopeGuard.hpp>
109
#include <csignal>
1110
#include <cerrno>
1211
#include "../shared.hpp"
@@ -15,7 +14,6 @@ static int ret = 0;
1514

1615
using namespace Hyprutils::OS;
1716
using namespace Hyprutils::Memory;
18-
using namespace Hyprutils::Utils;
1917

2018
#define UP CUniquePointer
2119
#define SP CSharedPointer
@@ -361,95 +359,6 @@ static bool test() {
361359
NLog::log("{}Killing all windows", Colors::YELLOW);
362360
Tests::killAllWindows();
363361

364-
NLog::log("{}Testing asymmetric gap splits", Colors::YELLOW);
365-
{
366-
367-
CScopeGuard guard = {[&]() {
368-
NLog::log("{}Cleaning up asymmetric gap test", Colors::YELLOW);
369-
Tests::killAllWindows();
370-
OK(getFromSocket("/reload"));
371-
}};
372-
373-
OK(getFromSocket("/dispatch workspace name:gap_split_test"));
374-
OK(getFromSocket("r/keyword general:gaps_in 0"));
375-
OK(getFromSocket("r/keyword general:border_size 0"));
376-
OK(getFromSocket("r/keyword dwindle:split_width_multiplier 1.0"));
377-
OK(getFromSocket("r/keyword workspace name:gap_split_test,gapsout:0 1000 0 0"));
378-
379-
NLog::log("{}Testing default split (force_split = 0)", Colors::YELLOW);
380-
OK(getFromSocket("r/keyword dwindle:force_split 0"));
381-
382-
if (!Tests::spawnKitty("gaps_kitty_A") || !Tests::spawnKitty("gaps_kitty_B")) {
383-
return false;
384-
}
385-
386-
NLog::log("{}Expecting vertical split (B below A)", Colors::YELLOW);
387-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_A"));
388-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,0");
389-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_B"));
390-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,540");
391-
392-
Tests::killAllWindows();
393-
EXPECT(Tests::windowCount(), 0);
394-
395-
NLog::log("{}Testing force_split = 1", Colors::YELLOW);
396-
OK(getFromSocket("r/keyword dwindle:force_split 1"));
397-
398-
if (!Tests::spawnKitty("gaps_kitty_A") || !Tests::spawnKitty("gaps_kitty_B")) {
399-
return false;
400-
}
401-
402-
NLog::log("{}Expecting vertical split (B above A)", Colors::YELLOW);
403-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_B"));
404-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,0");
405-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_A"));
406-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,540");
407-
408-
NLog::log("{}Expecting horizontal split (C left of B)", Colors::YELLOW);
409-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_B"));
410-
411-
if (!Tests::spawnKitty("gaps_kitty_C")) {
412-
return false;
413-
}
414-
415-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_C"));
416-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,0");
417-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_B"));
418-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 460,0");
419-
420-
Tests::killAllWindows();
421-
EXPECT(Tests::windowCount(), 0);
422-
423-
NLog::log("{}Testing force_split = 2", Colors::YELLOW);
424-
OK(getFromSocket("r/keyword dwindle:force_split 2"));
425-
426-
if (!Tests::spawnKitty("gaps_kitty_A") || !Tests::spawnKitty("gaps_kitty_B")) {
427-
return false;
428-
}
429-
430-
NLog::log("{}Expecting vertical split (B below A)", Colors::YELLOW);
431-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_A"));
432-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,0");
433-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_B"));
434-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,540");
435-
436-
NLog::log("{}Expecting horizontal split (C right of A)", Colors::YELLOW);
437-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_A"));
438-
439-
if (!Tests::spawnKitty("gaps_kitty_C")) {
440-
return false;
441-
}
442-
443-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_A"));
444-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 0,0");
445-
OK(getFromSocket("/dispatch focuswindow class:gaps_kitty_C"));
446-
EXPECT_CONTAINS(getFromSocket("/activewindow"), "at: 460,0");
447-
}
448-
449-
// kill all
450-
NLog::log("{}Killing all windows", Colors::YELLOW);
451-
Tests::killAllWindows();
452-
453362
NLog::log("{}Expecting 0 windows", Colors::YELLOW);
454363
EXPECT(Tests::windowCount(), 0);
455364

src/layout/DwindleLayout.cpp

Lines changed: 26 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,14 @@
99
#include "../managers/EventManager.hpp"
1010
#include "xwayland/XWayland.hpp"
1111

12-
SWorkspaceGaps CHyprDwindleLayout::getWorkspaceGaps(const PHLWORKSPACE& pWorkspace) {
13-
const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(pWorkspace);
14-
static auto PGAPSINDATA = CConfigValue<Hyprlang::CUSTOMTYPE>("general:gaps_in");
15-
static auto PGAPSOUTDATA = CConfigValue<Hyprlang::CUSTOMTYPE>("general:gaps_out");
16-
auto* const PGAPSIN = sc<CCssGapData*>((PGAPSINDATA.ptr())->getData());
17-
auto* const PGAPSOUT = sc<CCssGapData*>((PGAPSOUTDATA.ptr())->getData());
18-
19-
SWorkspaceGaps gaps;
20-
gaps.in = WORKSPACERULE.gapsIn.value_or(*PGAPSIN);
21-
gaps.out = WORKSPACERULE.gapsOut.value_or(*PGAPSOUT);
22-
return gaps;
23-
}
24-
25-
SNodeDisplayEdgeFlags CHyprDwindleLayout::getNodeDisplayEdgeFlags(const CBox& box, const PHLMONITOR& monitor) {
26-
return {
27-
.top = STICKS(box.y, monitor->m_position.y + monitor->m_reservedTopLeft.y),
28-
.bottom = STICKS(box.y + box.h, monitor->m_position.y + monitor->m_size.y - monitor->m_reservedBottomRight.y),
29-
.left = STICKS(box.x, monitor->m_position.x + monitor->m_reservedTopLeft.x),
30-
.right = STICKS(box.x + box.w, monitor->m_position.x + monitor->m_size.x - monitor->m_reservedBottomRight.x),
31-
};
32-
}
33-
3412
void SDwindleNodeData::recalcSizePosRecursive(bool force, bool horizontalOverride, bool verticalOverride) {
3513
if (children[0]) {
3614
static auto PSMARTSPLIT = CConfigValue<Hyprlang::INT>("dwindle:smart_split");
3715
static auto PPRESERVESPLIT = CConfigValue<Hyprlang::INT>("dwindle:preserve_split");
3816
static auto PFLMULT = CConfigValue<Hyprlang::FLOAT>("dwindle:split_width_multiplier");
3917

40-
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(workspaceID);
41-
if (!PWORKSPACE)
42-
return;
43-
44-
const auto PMONITOR = PWORKSPACE->m_monitor.lock();
45-
if (!PMONITOR)
46-
return;
47-
48-
const auto edges = layout->getNodeDisplayEdgeFlags(box, PMONITOR);
49-
auto [gapsIn, gapsOut] = layout->getWorkspaceGaps(PWORKSPACE);
50-
51-
const Vector2D availableSize = box.size() -
52-
Vector2D{(edges.left ? gapsOut.m_left : gapsIn.m_left / 2.f) + (edges.right ? gapsOut.m_right : gapsIn.m_right / 2.f),
53-
(edges.top ? gapsOut.m_top : gapsIn.m_top / 2.f) + (edges.bottom ? gapsOut.m_bottom : gapsIn.m_bottom / 2.f)};
54-
5518
if (*PPRESERVESPLIT == 0 && *PSMARTSPLIT == 0)
56-
splitTop = availableSize.y * *PFLMULT > availableSize.x;
19+
splitTop = box.h * *PFLMULT > box.w;
5720

5821
if (verticalOverride)
5922
splitTop = true;
@@ -64,28 +27,14 @@ void SDwindleNodeData::recalcSizePosRecursive(bool force, bool horizontalOverrid
6427

6528
if (SPLITSIDE) {
6629
// split left/right
67-
const float gapsAppliedToChild1 = (edges.left ? gapsOut.m_left : gapsIn.m_left / 2.f) + gapsIn.m_right / 2.f;
68-
const float gapsAppliedToChild2 = gapsIn.m_left / 2.f + (edges.right ? gapsOut.m_right : gapsIn.m_right / 2.f);
69-
const float totalGaps = gapsAppliedToChild1 + gapsAppliedToChild2;
70-
const float totalAvailable = box.w - totalGaps;
71-
72-
const float child1Available = totalAvailable * (splitRatio / 2.f);
73-
const float FIRSTSIZE = child1Available + gapsAppliedToChild1;
74-
75-
children[0]->box = CBox{box.x, box.y, FIRSTSIZE, box.h}.noNegativeSize();
76-
children[1]->box = CBox{box.x + FIRSTSIZE, box.y, box.w - FIRSTSIZE, box.h}.noNegativeSize();
30+
const float FIRSTSIZE = box.w / 2.0 * splitRatio;
31+
children[0]->box = CBox{box.x, box.y, FIRSTSIZE, box.h}.noNegativeSize();
32+
children[1]->box = CBox{box.x + FIRSTSIZE, box.y, box.w - FIRSTSIZE, box.h}.noNegativeSize();
7733
} else {
7834
// split top/bottom
79-
const float gapsAppliedToChild1 = (edges.top ? gapsOut.m_top : gapsIn.m_top / 2.f) + gapsIn.m_bottom / 2.f;
80-
const float gapsAppliedToChild2 = gapsIn.m_top / 2.f + (edges.bottom ? gapsOut.m_bottom : gapsIn.m_bottom / 2.f);
81-
const float totalGaps = gapsAppliedToChild1 + gapsAppliedToChild2;
82-
const float totalAvailable = box.h - totalGaps;
83-
84-
const float child1Available = totalAvailable * (splitRatio / 2.f);
85-
const float FIRSTSIZE = child1Available + gapsAppliedToChild1;
86-
87-
children[0]->box = CBox{box.x, box.y, box.w, FIRSTSIZE}.noNegativeSize();
88-
children[1]->box = CBox{box.x, box.y + FIRSTSIZE, box.w, box.h - FIRSTSIZE}.noNegativeSize();
35+
const float FIRSTSIZE = box.h / 2.0 * splitRatio;
36+
children[0]->box = CBox{box.x, box.y, box.w, FIRSTSIZE}.noNegativeSize();
37+
children[1]->box = CBox{box.x, box.y + FIRSTSIZE, box.w, box.h - FIRSTSIZE}.noNegativeSize();
8938
}
9039

9140
children[0]->recalcSizePosRecursive(force);
@@ -167,7 +116,10 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
167116
}
168117

169118
// for gaps outer
170-
const auto edges = getNodeDisplayEdgeFlags(pNode->box, PMONITOR);
119+
const bool DISPLAYLEFT = STICKS(pNode->box.x, PMONITOR->m_position.x + PMONITOR->m_reservedTopLeft.x);
120+
const bool DISPLAYRIGHT = STICKS(pNode->box.x + pNode->box.w, PMONITOR->m_position.x + PMONITOR->m_size.x - PMONITOR->m_reservedBottomRight.x);
121+
const bool DISPLAYTOP = STICKS(pNode->box.y, PMONITOR->m_position.y + PMONITOR->m_reservedTopLeft.y);
122+
const bool DISPLAYBOTTOM = STICKS(pNode->box.y + pNode->box.h, PMONITOR->m_position.y + PMONITOR->m_size.y - PMONITOR->m_reservedBottomRight.y);
171123

172124
const auto PWINDOW = pNode->pWindow.lock();
173125
// get specific gaps and rules for this workspace,
@@ -228,9 +180,9 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
228180
}
229181
}
230182

231-
const auto GAPOFFSETTOPLEFT = Vector2D(sc<double>(edges.left ? gapsOut.m_left : gapsIn.m_left), sc<double>(edges.top ? gapsOut.m_top : gapsIn.m_top));
183+
const auto GAPOFFSETTOPLEFT = Vector2D(sc<double>(DISPLAYLEFT ? gapsOut.m_left : gapsIn.m_left), sc<double>(DISPLAYTOP ? gapsOut.m_top : gapsIn.m_top));
232184

233-
const auto GAPOFFSETBOTTOMRIGHT = Vector2D(sc<double>(edges.right ? gapsOut.m_right : gapsIn.m_right), sc<double>(edges.bottom ? gapsOut.m_bottom : gapsIn.m_bottom));
185+
const auto GAPOFFSETBOTTOMRIGHT = Vector2D(sc<double>(DISPLAYRIGHT ? gapsOut.m_right : gapsIn.m_right), sc<double>(DISPLAYBOTTOM ? gapsOut.m_bottom : gapsIn.m_bottom));
234186

235187
calcPos = calcPos + GAPOFFSETTOPLEFT + ratioPadding / 2;
236188
calcSize = calcSize - GAPOFFSETTOPLEFT - GAPOFFSETBOTTOMRIGHT - ratioPadding;
@@ -398,6 +350,7 @@ void CHyprDwindleLayout::onWindowCreatedTiling(PHLWINDOW pWindow, eDirection dir
398350
}
399351

400352
// get the node under our cursor
353+
401354
m_dwindleNodesData.emplace_back();
402355
const auto NEWPARENT = &m_dwindleNodesData.back();
403356

@@ -410,17 +363,8 @@ void CHyprDwindleLayout::onWindowCreatedTiling(PHLWINDOW pWindow, eDirection dir
410363

411364
static auto PWIDTHMULTIPLIER = CConfigValue<Hyprlang::FLOAT>("dwindle:split_width_multiplier");
412365

413-
const auto edges = getNodeDisplayEdgeFlags(NEWPARENT->box, PMONITOR);
414-
415-
const auto WORKSPACE = g_pCompositor->getWorkspaceByID(PNODE->workspaceID);
416-
auto [gapsIn, gapsOut] = getWorkspaceGaps(WORKSPACE);
417-
418366
// if cursor over first child, make it first, etc
419-
const Vector2D availableSize = NEWPARENT->box.size() -
420-
Vector2D{(edges.left ? gapsOut.m_left : gapsIn.m_left / 2.f) + (edges.right ? gapsOut.m_right : gapsIn.m_right / 2.f),
421-
(edges.top ? gapsOut.m_top : gapsIn.m_top / 2.f) + (edges.bottom ? gapsOut.m_bottom : gapsIn.m_bottom / 2.f)};
422-
423-
const auto SIDEBYSIDE = availableSize.x > availableSize.y * *PWIDTHMULTIPLIER;
367+
const auto SIDEBYSIDE = NEWPARENT->box.w > NEWPARENT->box.h * *PWIDTHMULTIPLIER;
424368
NEWPARENT->splitTop = !SIDEBYSIDE;
425369

426370
static auto PFORCESPLIT = CConfigValue<Hyprlang::INT>("dwindle:force_split");
@@ -675,8 +619,11 @@ void CHyprDwindleLayout::resizeActiveWindow(const Vector2D& pixResize, eRectCorn
675619
static auto PSMARTRESIZING = CConfigValue<Hyprlang::INT>("dwindle:smart_resizing");
676620

677621
// get some data about our window
678-
const auto PMONITOR = PWINDOW->m_monitor.lock();
679-
const auto edges = getNodeDisplayEdgeFlags(CBox{PWINDOW->m_position, PWINDOW->m_size}, PMONITOR);
622+
const auto PMONITOR = PWINDOW->m_monitor.lock();
623+
const bool DISPLAYLEFT = STICKS(PWINDOW->m_position.x, PMONITOR->m_position.x + PMONITOR->m_reservedTopLeft.x);
624+
const bool DISPLAYRIGHT = STICKS(PWINDOW->m_position.x + PWINDOW->m_size.x, PMONITOR->m_position.x + PMONITOR->m_size.x - PMONITOR->m_reservedBottomRight.x);
625+
const bool DISPLAYTOP = STICKS(PWINDOW->m_position.y, PMONITOR->m_position.y + PMONITOR->m_reservedTopLeft.y);
626+
const bool DISPLAYBOTTOM = STICKS(PWINDOW->m_position.y + PWINDOW->m_size.y, PMONITOR->m_position.y + PMONITOR->m_size.y - PMONITOR->m_reservedBottomRight.y);
680627

681628
if (PWINDOW->m_isPseudotiled) {
682629
if (!m_pseudoDragFlags.started) {
@@ -724,10 +671,10 @@ void CHyprDwindleLayout::resizeActiveWindow(const Vector2D& pixResize, eRectCorn
724671

725672
// construct allowed movement
726673
Vector2D allowedMovement = pixResize;
727-
if (edges.left && edges.right)
674+
if (DISPLAYLEFT && DISPLAYRIGHT)
728675
allowedMovement.x = 0;
729676

730-
if (edges.bottom && edges.top)
677+
if (DISPLAYBOTTOM && DISPLAYTOP)
731678
allowedMovement.y = 0;
732679

733680
if (*PSMARTRESIZING == 1) {
@@ -737,10 +684,10 @@ void CHyprDwindleLayout::resizeActiveWindow(const Vector2D& pixResize, eRectCorn
737684
SDwindleNodeData* PHOUTER = nullptr;
738685
SDwindleNodeData* PHINNER = nullptr;
739686

740-
const auto LEFT = corner == CORNER_TOPLEFT || corner == CORNER_BOTTOMLEFT || edges.right;
741-
const auto TOP = corner == CORNER_TOPLEFT || corner == CORNER_TOPRIGHT || edges.bottom;
742-
const auto RIGHT = corner == CORNER_TOPRIGHT || corner == CORNER_BOTTOMRIGHT || edges.left;
743-
const auto BOTTOM = corner == CORNER_BOTTOMLEFT || corner == CORNER_BOTTOMRIGHT || edges.top;
687+
const auto LEFT = corner == CORNER_TOPLEFT || corner == CORNER_BOTTOMLEFT || DISPLAYRIGHT;
688+
const auto TOP = corner == CORNER_TOPLEFT || corner == CORNER_TOPRIGHT || DISPLAYBOTTOM;
689+
const auto RIGHT = corner == CORNER_TOPRIGHT || corner == CORNER_BOTTOMRIGHT || DISPLAYLEFT;
690+
const auto BOTTOM = corner == CORNER_BOTTOMLEFT || corner == CORNER_BOTTOMRIGHT || DISPLAYTOP;
744691
const auto NONE = corner == CORNER_NONE;
745692

746693
for (auto PCURRENT = PNODE; PCURRENT && PCURRENT->pParent; PCURRENT = PCURRENT->pParent) {

src/layout/DwindleLayout.hpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#pragma once
22

33
#include "IHyprLayout.hpp"
4-
#include "../config/ConfigDataValues.hpp"
54
#include "../desktop/DesktopTypes.hpp"
65

76
#include <list>
@@ -13,15 +12,6 @@
1312
class CHyprDwindleLayout;
1413
enum eFullscreenMode : int8_t;
1514

16-
struct SNodeDisplayEdgeFlags {
17-
bool top = false, bottom = false, left = false, right = false;
18-
};
19-
20-
struct SWorkspaceGaps {
21-
CCssGapData in;
22-
CCssGapData out;
23-
};
24-
2515
struct SDwindleNodeData {
2616
SDwindleNodeData* pParent = nullptr;
2717
bool isNode = false;
@@ -75,9 +65,6 @@ class CHyprDwindleLayout : public IHyprLayout {
7565
virtual void onDisable();
7666

7767
private:
78-
SWorkspaceGaps getWorkspaceGaps(const PHLWORKSPACE& pWorkspace);
79-
SNodeDisplayEdgeFlags getNodeDisplayEdgeFlags(const CBox& box, const PHLMONITOR& monitor);
80-
8168
std::list<SDwindleNodeData> m_dwindleNodesData;
8269

8370
struct {

0 commit comments

Comments
 (0)