From ee67cd0ba1e950f5e21328580cc46b618be5fc01 Mon Sep 17 00:00:00 2001 From: "D.B" Date: Thu, 7 Jul 2016 22:28:57 +0200 Subject: Fix tabbed/stacked corner case #742 Tabbed/stacked containers are now created only if a view is present on the workspace. If a view is created on previously empty tabbed/stacked workspace, it gets wrapped in a container. --- sway/container.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'sway/container.c') diff --git a/sway/container.c b/sway/container.c index a7e46571..ae70a8ee 100644 --- a/sway/container.c +++ b/sway/container.c @@ -740,6 +740,10 @@ bool swayc_is_child_of(swayc_t *child, swayc_t *parent) { return swayc_is_parent_of(parent, child); } +bool swayc_is_empty_workspace(swayc_t *container) { + return container->type == C_WORKSPACE && container->children->length == 0; +} + int swayc_gap(swayc_t *container) { if (container->type == C_VIEW || container->type == C_CONTAINER) { return container->gaps >= 0 ? container->gaps : config->gaps_inner; @@ -879,7 +883,7 @@ swayc_t *swayc_tabbed_stacked_parent(swayc_t *view) { if (!ASSERT_NONNULL(view)) { return NULL; } - while (view->type != C_WORKSPACE && view->parent) { + while (view->type != C_WORKSPACE && view->parent && view->parent->type != C_WORKSPACE) { view = view->parent; if (view->layout == L_TABBED || view->layout == L_STACKED) { parent = view; -- cgit v1.2.3