102360f96ad4c079bfbdae81065b262b631fff0f

Author
outfoxxed <outfoxxed@outfoxxed.me>
Committer
outfoxxed <outfoxxed@outfoxxed.me>
Date

Message

Make shifting a node in a single node group always break that group

The shifted node will also inherit the size of the group

Diff

 1diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
 2index 4490844d6365ce65cc819495c326842b56951c7f..7874994dcaf5bad1c1dc869a9aeb355d5f1fdc1e 100644
 3--- a/src/Hy3Layout.cpp
 4+++ b/src/Hy3Layout.cpp
 5@@ -1415,7 +1415,14 @@ void Hy3Layout::shiftWindow(int workspace, ShiftDirection direction, bool once)
 6 	Debug::log(LOG, "ShiftWindow %p %d", node, direction);
 7 	if (node == nullptr) return;
 8 
 9-	this->shiftOrGetFocus(*node, direction, true, once, false);
10+	if (once && node->parent != nullptr && node->parent->data.as_group.children.size() == 1) {
11+		auto* node2 = node->parent;
12+		Hy3Node::swapData(*node, *node2);
13+		node2->layout->nodes.remove(*node);
14+		node2->recalcSizePosRecursive();
15+	} else {
16+		this->shiftOrGetFocus(*node, direction, true, once, false);
17+	}
18 }
19 
20 bool shiftIsForward(ShiftDirection direction) {