8b12921939a6caae5a0adcac5be37268fd02dc40
- Author
- Sekhat Temporus <sekhat@temporus.me>
- Committer
- Sekhat Temporus <sekhat@temporus.me>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/README.md b/README.md
2index 816b481123b99635d3a00896859498cc761c417f..4516cf8c7392ab5fe70a7513dfeba87b7150a1e9 100644
3--- a/README.md
4+++ b/README.md
5@@ -215,10 +215,8 @@ plugin {
6 - `hy3:makegroup, <h | v | opposite | tab>, [ephemeral | force_ephemeral]` - make a vertical / horizontal split or tab group
7 - `ephemeral` - the group will be removed once it contains only one node. does not affect existing groups.
8 - `force_ephemeral` - same as ephemeral, but converts existing single windows groups.
9- - `hy3:changegroup, <h | v | tab | untab>, [ephemeral | force_ephemeral]` - change the group the node belongs to, to a different layout
10+ - `hy3:changegroup, <h | v | tab | untab> - change the group the node belongs to, to a different layout
11 - `untab` will untab the group if it was previously tabbed
12- - `ephemeral` - the group will be removed once it contains only one node. does not affect existing groups.
13- - `force_ephemeral` - same as ephemeral, but converts existing single windows groups.
14 - `hy3:movefocus, <l | u | d | r | left | down | up | right>, [visible]` - move the focus left, up, down, or right
15 - `visible` - only move between visible nodes, not hidden tabs
16 - `hy3:movewindow, <l | u | d | r | left | down | up | right>, [once]` - move a window left, up, down, or right
17diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
18index 134a86fe5da36a9ca52766ae5bde18c64e002c28..8d4449fb72ab15b12bf4ad4779ee601e9654a70e 100644
19--- a/src/Hy3Layout.cpp
20+++ b/src/Hy3Layout.cpp
21@@ -748,19 +748,21 @@ void Hy3Layout::makeOppositeGroupOnWorkspace(int workspace, GroupEphemeralityOpt
22
23 void Hy3Layout::changeGroupOnWorkspace(
24 int workspace,
25- Hy3GroupLayout layout,
26- GroupEphemeralityOption ephemeral
27+ Hy3GroupLayout layout
28 ) {
29 auto* node = this->getWorkspaceFocusedNode(workspace);
30- this->changeGroupOn(node, layout, ephemeral);
31+
32+ if (node == nullptr) return;
33+
34+ this->changeGroupOn(*node, layout);
35 }
36
37-void Hy3Layout::untabGroupOnWorkspace(
38- int workspace,
39- GroupEphemeralityOption ephemeral
40-) {
41+void Hy3Layout::untabGroupOnWorkspace(int workspace) {
42 auto* node = this->getWorkspaceFocusedNode(workspace);
43- this->untabGroupOn(node, ephemeral);
44+
45+ if (node == nullptr) return;
46+
47+ this->untabGroupOn(*node);
48 }
49
50 void Hy3Layout::makeGroupOn(
51@@ -773,7 +775,8 @@ void Hy3Layout::makeGroupOn(
52 if (node->parent != nullptr) {
53 auto& group = node->parent->data.as_group;
54 if (group.children.size() == 1) {
55- group.updateLayout(layout, ephemeral);
56+ group.setLayout(layout);
57+ group.setEphemeral(ephemeral);
58 node->parent->recalcSizePosRecursive();
59 return;
60 }
61@@ -798,7 +801,8 @@ void Hy3Layout::makeOppositeGroupOn(
62 = group.layout == Hy3GroupLayout::SplitH ? Hy3GroupLayout::SplitV : Hy3GroupLayout::SplitH;
63
64 if (group.children.size() == 1) {
65- group.updateLayout(layout, ephemeral);
66+ group.setLayout(layout);
67+ group.setEphemeral(ephemeral);
68 node->parent->recalcSizePosRecursive();
69 return;
70 }
71@@ -807,32 +811,28 @@ void Hy3Layout::makeOppositeGroupOn(
72 }
73
74 void Hy3Layout::changeGroupOn(
75- Hy3Node* node,
76- Hy3GroupLayout layout,
77- GroupEphemeralityOption ephemeral
78+ Hy3Node& node,
79+ Hy3GroupLayout layout
80 ) {
81- if (node == nullptr) return;
82-
83- if (node->parent == nullptr) {
84- makeGroupOn(node, layout, ephemeral);
85+ if (node.parent == nullptr) {
86+ makeGroupOn(&node, layout, GroupEphemeralityOption::Ephemeral);
87 return;
88 }
89
90- auto& group = node->parent->data.as_group;
91- group.updateLayout(layout, ephemeral);
92- node->parent->recalcSizePosRecursive();
93+ auto& group = node.parent->data.as_group;
94+ group.setLayout(layout);
95+ node.parent->recalcSizePosRecursive();
96 }
97
98-void Hy3Layout::untabGroupOn(Hy3Node* node, GroupEphemeralityOption ephemeral) {
99- if (node == nullptr) return;
100+void Hy3Layout::untabGroupOn(Hy3Node& node) {
101+ if (node.parent == nullptr) return;
102
103- if (node->parent == nullptr) return;
104+ auto& group = node.parent->data.as_group;
105+ if (group.layout != Hy3GroupLayout::Tabbed) return;
106
107- auto& group = node->parent->data.as_group;
108+ changeGroupOn(node, group.previous_nontab_layout);
109
110- if (group.layout != Hy3GroupLayout::Tabbed) return;
111
112- changeGroupOn(node, group.previous_nontab_layout, ephemeral);
113 }
114
115 void Hy3Layout::shiftWindow(int workspace, ShiftDirection direction, bool once) {
116@@ -842,7 +842,7 @@ void Hy3Layout::shiftWindow(int workspace, ShiftDirection direction, bool once)
117
118 if (once && node->parent != nullptr && node->parent->data.as_group.children.size() == 1) {
119 if (node->parent->parent == nullptr) {
120- node->parent->data.as_group.layout = Hy3GroupLayout::SplitH;
121diff --git a/src/Hy3Layout.hpp b/src/Hy3Layout.hpp
122index ace2ffe1000a723f5d3599169ffdd59c66e4023a..8d7970ea436f620aefffe6942decf8df6d289564 100644
123--- a/src/Hy3Layout.hpp
124+++ b/src/Hy3Layout.hpp
125@@ -90,12 +90,12 @@ public:
126
127 void makeGroupOnWorkspace(int workspace, Hy3GroupLayout, GroupEphemeralityOption);
128 void makeOppositeGroupOnWorkspace(int workspace, GroupEphemeralityOption);
129- void changeGroupOnWorkspace(int workspace, Hy3GroupLayout, GroupEphemeralityOption);
130- void untabGroupOnWorkspace(int workspace, GroupEphemeralityOption);
131+ void changeGroupOnWorkspace(int workspace, Hy3GroupLayout);
132+ void untabGroupOnWorkspace(int workspace);
133 void makeGroupOn(Hy3Node*, Hy3GroupLayout, GroupEphemeralityOption);
134 void makeOppositeGroupOn(Hy3Node*, GroupEphemeralityOption);
135- void changeGroupOn(Hy3Node*, Hy3GroupLayout, GroupEphemeralityOption);
136- void untabGroupOn(Hy3Node*, GroupEphemeralityOption);
137+ void changeGroupOn(Hy3Node&, Hy3GroupLayout);
138+ void untabGroupOn(Hy3Node&);
139 void shiftWindow(int workspace, ShiftDirection, bool once);
140 void shiftFocus(int workspace, ShiftDirection, bool visible);
141 void changeFocus(int workspace, FocusShift);
142diff --git a/src/Hy3Node.cpp b/src/Hy3Node.cpp
143index 084d6a5d71407dbe9d8bd7739bc750c11a0efb62..d6afc3ac49ad73f6b4c1ad0a1de946bb142ff368 100644
144--- a/src/Hy3Node.cpp
145+++ b/src/Hy3Node.cpp
146@@ -57,25 +57,26 @@ void Hy3GroupData::collapseExpansions() {
147 }
148 }
149
150-void Hy3GroupData::updateLayout(
151- Hy3GroupLayout layout,
152- GroupEphemeralityOption ephemeral
153+void Hy3GroupData::setLayout(
154+ Hy3GroupLayout layout
155 ) {
156 this->layout = layout;
157
158 if (layout != Hy3GroupLayout::Tabbed) {
159 this->previous_nontab_layout = layout;
160 }
161+}
162
163+void Hy3GroupData::setEphemeral(GroupEphemeralityOption ephemeral) {
164 switch (ephemeral) {
165- case GroupEphemeralityOption::ForceEphemeral:
166- this->ephemeral = true;
167- break;
168 case GroupEphemeralityOption::Standard:
169 this->ephemeral = false;
170 break;
171+ case GroupEphemeralityOption::ForceEphemeral:
172+ this->ephemeral = true;
173+ break;
174 case GroupEphemeralityOption::Ephemeral:
175- // this->ephemeral stays the same
176+ // no change
177 break;
178 }
179 }
180diff --git a/src/Hy3Node.hpp b/src/Hy3Node.hpp
181index 6f38276da9bcff9b325ec4e6a1f937000d110fb7..fbc0861aa2fe4e58d975c4e9ce1f4fe3c1dcd627 100644
182--- a/src/Hy3Node.hpp
183+++ b/src/Hy3Node.hpp
184@@ -43,7 +43,8 @@ struct Hy3GroupData {
185
186 bool hasChild(Hy3Node* child);
187 void collapseExpansions();
188- void updateLayout(Hy3GroupLayout layout, GroupEphemeralityOption ephemeral);
189+ void setLayout(Hy3GroupLayout layout);
190+ void setEphemeral(GroupEphemeralityOption ephemeral);
191
192 private:
193 Hy3GroupData(Hy3GroupData&&);
194diff --git a/src/dispatchers.cpp b/src/dispatchers.cpp
195index 04b3c1135112e86a6dbe4756d81a6daeb92c497b..e35a7ba7d5aa7933b02d268945a68352b1756242 100644
196--- a/src/dispatchers.cpp
197+++ b/src/dispatchers.cpp
198@@ -49,21 +49,14 @@ void dispatch_changegroup(std::string value) {
199
200 auto args = CVarList(value);
201
202- GroupEphemeralityOption ephemeral = GroupEphemeralityOption::Standard;
203- if (args[1] == "ephemeral") {
204- ephemeral = GroupEphemeralityOption::Ephemeral;
205- } else if (args[1] == "force_ephemeral") {
206- ephemeral = GroupEphemeralityOption::ForceEphemeral;
207- }
208-
209 if (args[0] == "h") {
210- g_Hy3Layout->changeGroupOnWorkspace(workspace, Hy3GroupLayout::SplitH, ephemeral);
211+ g_Hy3Layout->changeGroupOnWorkspace(workspace, Hy3GroupLayout::SplitH);
212 } else if (args[0] == "v") {
213- g_Hy3Layout->changeGroupOnWorkspace(workspace, Hy3GroupLayout::SplitV, ephemeral);
214+ g_Hy3Layout->changeGroupOnWorkspace(workspace, Hy3GroupLayout::SplitV);
215 } else if (args[0] == "tab") {
216- g_Hy3Layout->changeGroupOnWorkspace(workspace, Hy3GroupLayout::Tabbed, ephemeral);
217+ g_Hy3Layout->changeGroupOnWorkspace(workspace, Hy3GroupLayout::Tabbed);
218 } else if (args[0] == "untab") {
219- g_Hy3Layout->untabGroupOnWorkspace(workspace, ephemeral);
220+ g_Hy3Layout->untabGroupOnWorkspace(workspace);
221 }
222 // TODO
223 //else if (args[0] == "opposite") {