From f77986338fc4186d003908012685c12d718ed647 Mon Sep 17 00:00:00 2001
From: Drew DeVault <sir@cmpwn.com>
Date: Wed, 4 Apr 2018 21:32:31 -0400
Subject: Implement resize command

---
 sway/tree/layout.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

(limited to 'sway/tree')

diff --git a/sway/tree/layout.c b/sway/tree/layout.c
index 5abdbc32..7e2c61ed 100644
--- a/sway/tree/layout.c
+++ b/sway/tree/layout.c
@@ -729,3 +729,24 @@ struct sway_container *container_split(struct sway_container *child,
 
 	return cont;
 }
+
+void container_recursive_resize(struct sway_container *container,
+		double amount, enum resize_edge edge) {
+	bool layout_match = true;
+	wlr_log(L_DEBUG, "Resizing %p with amount: %f", container, amount);
+	if (edge == RESIZE_EDGE_LEFT || edge == RESIZE_EDGE_RIGHT) {
+		container->width += amount;
+		layout_match = container->layout == L_HORIZ;
+	} else if (edge == RESIZE_EDGE_TOP || edge == RESIZE_EDGE_BOTTOM) {
+		container->height += amount;
+		layout_match = container->layout == L_VERT;
+	}
+	if (container->children) {
+		for (int i = 0; i < container->children->length; i++) {
+			struct sway_container *child = container->children->items[i];
+			double amt = layout_match ?
+				amount / container->children->length : amount;
+			container_recursive_resize(child, amt, edge);
+		}
+	}
+}
-- 
cgit v1.2.3