]> git.sur5r.net Git - i3/i3/commitdiff
Fix coords of floating containers when the output is disabled.
authorFernando Tarlá Cardoso Lemos <fernandotcl@gmail.com>
Sun, 29 Jan 2012 17:53:30 +0000 (15:53 -0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 29 Jan 2012 18:02:27 +0000 (18:02 +0000)
This prevents floating containers from "disappearing" when their
associated output is disabled. Thanks Michael for the advice.

src/randr.c

index bb6b4e90de2f60d13e1aa9e9fb71395196a4b7f3..e65fdbd6f8fea7827eac3242b6a926db33ff1713 100644 (file)
@@ -754,7 +754,8 @@ void randr_query_outputs() {
                     DLOG("next = %p\n", next);
                 }
 
-                /* 2: iterate through workspaces and re-assign them */
+                /* 2: iterate through workspaces and re-assign them, fixing the coordinates
+                 * of floating containers as we go */
                 Con *current;
                 Con *old_content = output_get_content(output->con);
                 while (!TAILQ_EMPTY(&(old_content->nodes_head))) {
@@ -763,6 +764,10 @@ void randr_query_outputs() {
                     con_detach(current);
                     DLOG("Re-attaching current = %p / %s\n", current, current->name);
                     con_attach(current, first_content, false);
+                    DLOG("Fixing the coordinates of floating containers\n");
+                    Con *floating_con;
+                    TAILQ_FOREACH(floating_con, &(current->floating_head), floating_windows)
+                        floating_fix_coordinates(floating_con, &(old_content->rect), &(first_content->rect));
                     DLOG("Done, next\n");
                 }
                 DLOG("re-attached all workspaces\n");