From ba7a76e3675a2be5d3d483954c49a219d434ae19 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 14 Sep 2017 15:41:48 +0000 Subject: [PATCH] Fix erratic behavior with single container child jumping outputs This fixes a regression introduced in commit 4e88c10564ca5366c2578908f62ec56625a26718: when attempting to move the single child of a container in the direction of another output, i3 would move the window to the output, despite the window not being at the edge of its output, instead of moving it to its parent container. The bug occurred because the check for moving containers across outputs with non-default workspace layouts (issue #1603) did not actually verify that the moved window lies at the edge of the workspace, despite what its comment said. Fixes issue #2466. --- src/move.c | 3 +- testcases/t/537-move-single-to-output.t | 63 +++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 testcases/t/537-move-single-to-output.t diff --git a/src/move.c b/src/move.c index 70c8c788..3ecc69e4 100644 --- a/src/move.c +++ b/src/move.c @@ -248,7 +248,8 @@ void tree_move(Con *con, int direction) { ? AFTER : BEFORE); insert_con_into(con, target, position); - } else if (con->parent->parent->type == CT_WORKSPACE && + } else if (!next && + con->parent->parent->type == CT_WORKSPACE && con->parent->layout != L_DEFAULT && con_num_children(con->parent) == 1) { /* Con is the lone child of a non-default layout container at the edge diff --git a/testcases/t/537-move-single-to-output.t b/testcases/t/537-move-single-to-output.t new file mode 100644 index 00000000..db5b4925 --- /dev/null +++ b/testcases/t/537-move-single-to-output.t @@ -0,0 +1,63 @@ +#!perl +# vim:ts=4:sw=4:expandtab +# +# Please read the following documents before working on tests: +# • http://build.i3wm.org/docs/testsuite.html +# (or docs/testsuite) +# +# • http://build.i3wm.org/docs/lib-i3test.html +# (alternatively: perldoc ./testcases/lib/i3test.pm) +# +# • http://build.i3wm.org/docs/ipc.html +# (or docs/ipc) +# +# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf +# (unless you are already familiar with Perl) +# +# Tests that windows inside containers with a single child do not jump +# over other containers and erratically move across outputs. +# Ticket: #2466 +# Bug still in: 4.14-63-g75d11820 +use i3test i3_config => <