8b12921939a6caae5a0adcac5be37268fd02dc40

Author
Sekhat Temporus <sekhat@temporus.me>
Committer
Sekhat Temporus <sekhat@temporus.me>
Date

Message

update change group to match requested changes

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") {