From 56814310e0c80ecd9aa8ba93f483f65f5f23fd70 Mon Sep 17 00:00:00 2001
From: Luminarys <kizunanohikari@gmail.com>
Date: Sat, 15 Aug 2015 16:13:08 -0500
Subject: [PATCH] Fixed reloading and arrange_windows

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

diff --git a/sway/layout.c b/sway/layout.c
index 3fd7f5c1..918da9f0 100644
--- a/sway/layout.c
+++ b/sway/layout.c
@@ -95,15 +95,28 @@ void arrange_windows(swayc_t *container, int width, int height) {
 			child->x = x;
 			child->y = y;
 			arrange_windows(child, -1, -1);
-			x += child->width;
+			// Removed for now because wlc works with relative positions
+			// Addition can be reconsidered once wlc positions are changed
+			// x += child->width;
 		}
 		return;
 	case C_OUTPUT:
 		container->width = width;
 		container->height = height;
-		x -= container->x;
-		y -= container->y;
-		break;
+		// These lines make x/y negative and result in stuff glitching out
+		// Their addition can be reconsidered once wlc positions are changed
+		// x -= container->x;
+		// y -= container->y;
+		for (i = 0; i < container->children->length; ++i) {
+			swayc_t *child = container->children->items[i];
+			sway_log(L_DEBUG, "Arranging workspace #%d", i);
+			child->x = x;
+			child->y = y;
+			child->width = width;
+			child->height = height;
+			arrange_windows(child, -1, -1);
+		}
+		return;
 	case C_VIEW:
 		{
 			struct wlc_geometry geometry = {