Merge pull request #3812 from xzfc/move-to-parent

Fix "move con to parent" trick
This commit is contained in:
Orestis 2019-10-08 11:54:40 +03:00 committed by GitHub
commit 465447a96b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 3 deletions

View File

@ -1312,8 +1312,8 @@ bool con_move_to_mark(Con *con, const char *mark) {
return true;
}
if (target->type == CT_WORKSPACE) {
DLOG("target container is a workspace, simply moving the container there.\n");
if (target->type == CT_WORKSPACE && con_is_leaf(target)) {
DLOG("target container is an empty workspace, simply moving the container there.\n");
con_move_to_workspace(con, target, true, false, false);
return true;
}

View File

@ -1230,7 +1230,7 @@ sub create_layout {
$r = $r . '{"swallows": [{';
$r = $r . '"class": "^' . "$char" . '$"';
$r = $r . '}]},';
$r = $r . '}]}' . ($depth == 0 ? "\n" : ',');
} else {
die "Could not understand $char";
}

View File

@ -361,6 +361,7 @@ does_i3_live;
###############################################################################
# Given 'S' and 'M' where 'M' is a workspace and 'S' is on a different
# workspace, then 'S' ends up as a tiling container on 'M'.
# See issue: #2003
###############################################################################
fresh_workspace;

View File

@ -0,0 +1,37 @@
#!perl
# vim:ts=4:sw=4:expandtab
#
# Please read the following documents before working on tests:
# • https://build.i3wm.org/docs/testsuite.html
# (or docs/testsuite)
#
# • https://build.i3wm.org/docs/lib-i3test.html
# (alternatively: perldoc ./testcases/lib/i3test.pm)
#
# • https://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)
#
# Make sure the trick used to move the container to its parent works.
# https://github.com/i3/i3/issues/1326#issuecomment-349082811
use i3test;
cmp_tree(
msg => 'Move to parent when the parent is a workspace',
layout_before => 'a H[b*] c',
layout_after => 'a b* c',
cb => sub {
cmd 'mark _a, focus parent, focus parent, mark _b, [con_mark=_a] move window to mark _b, [con_mark=_a] focus';
});
cmp_tree(
msg => 'Move to parent when the parent is a split',
layout_before => 'V[a H[b*] c]',
layout_after => 'V[a b* c]',
cb => sub {
cmd 'mark _a, focus parent, focus parent, mark _b, [con_mark=_a] move window to mark _b, [con_mark=_a] focus';
});
done_testing;