From bc239b2f6b0cf9d29adb8df7e464e7d104cad4bb Mon Sep 17 00:00:00 2001 From: Tudor Brindus Date: Sun, 4 Oct 2020 20:42:06 -0400 Subject: [PATCH 1/2] desktop/render: show indicators for top-level split i3 shows indicators for the workspace-level pseudo-split, but Sway does not, as of b977c02. This commit replaces the floating container check with a call to `container_is_floating`, which has some more robust checks in place. Fixes #5699. --- sway/desktop/render.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sway/desktop/render.c b/sway/desktop/render.c index d3d927c83..3a4222935 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c @@ -371,7 +371,7 @@ static void render_view(struct sway_output *output, pixman_region32_t *damage, container_current_parent_layout(con); if (state->border_right) { - if (con->current.parent && siblings->length == 1 && layout == L_HORIZ) { + if (!container_is_floating(con) && siblings->length == 1 && layout == L_HORIZ) { memcpy(&color, colors->indicator, sizeof(float) * 4); } else { memcpy(&color, colors->child_border, sizeof(float) * 4); @@ -386,7 +386,7 @@ static void render_view(struct sway_output *output, pixman_region32_t *damage, } if (state->border_bottom) { - if (con->current.parent && siblings->length == 1 && layout == L_VERT) { + if (!container_is_floating(con) && siblings->length == 1 && layout == L_VERT) { memcpy(&color, colors->indicator, sizeof(float) * 4); } else { memcpy(&color, colors->child_border, sizeof(float) * 4); From 392d4808c3012ff978fa5eeb41f0757b3993dcd1 Mon Sep 17 00:00:00 2001 From: Tudor Brindus Date: Sat, 26 Sep 2020 16:27:30 -0400 Subject: [PATCH 2/2] commands/move: fix single-split escaping on move Prior to this commit, having a layout like T[app1 V[app2]], focusing app2, and then doing `move left` would result in T[app2 app1]. Now, the resulting layout is T[app1 app2], which matches i3 behavior. `container_flatten` updates `container->parent`, meaning that the existing check would never be true. --- sway/commands/move.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sway/commands/move.c b/sway/commands/move.c index c1d1fade6..959e5bfbf 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c @@ -311,9 +311,10 @@ static bool container_move_in_direction(struct sway_container *container, // If container is in a split container by itself, move out of the split if (container->parent) { + struct sway_container *old_parent = container->parent; struct sway_container *new_parent = container_flatten(container->parent); - if (new_parent != container->parent) { + if (new_parent != old_parent) { return true; } }