From d11533595133685d15fd6cdbf9f1611be5e8e2f3 Mon Sep 17 00:00:00 2001 From: taiyu Date: Wed, 26 Aug 2015 21:25:57 -0700 Subject: move workspace from dead output to other output --- sway/container.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'sway/container.c') diff --git a/sway/container.c b/sway/container.c index 3558809a..a3bc9864 100644 --- a/sway/container.c +++ b/sway/container.c @@ -281,8 +281,21 @@ swayc_t *destroy_output(swayc_t *output) { if (!ASSERT_NONNULL(output)) { return NULL; } - if (output->children->length == 0) { - // TODO move workspaces to other outputs + if (output->children->length > 0) { + int i, len = root_container.children->length; + // TODO save workspaces when there are no outputs. + // TODO also check if there will ever be no outputs except for exiting + // program + if (len > 1) { + len = output->children->length; + int p = root_container.children->items[0] == output; + // Move workspace from this output to another output + for (i = 0; i < len; ++i) { + swayc_t *child = output->children->items[i]; + remove_child(child); + add_child(root_container.children->items[p], child); + } + } } sway_log(L_DEBUG, "OUTPUT: Destroying output '%lu'", output->handle); free_swayc(output); -- cgit v1.2.3