_con_move_to_con: Move upwards only on CT_FLOATING_CON

If target is inside a floating container but not its direct child, the
move can be completed as is.

Fixes #3402.
This commit is contained in:
Orestis Floros
2018-09-14 16:09:45 +03:00
parent ede954128a
commit d407393d0d
2 changed files with 27 additions and 6 deletions

View File

@ -321,6 +321,27 @@ sync_with_i3;
($nodes, $focus) = get_ws_content($target_ws);
is(@{$nodes}, 1, 'tiling container moved to the target workspace');
###############################################################################
# Given 'S' and 'M' where 'M' is inside a floating container but not its direct
# child, when 'S' is moved to 'M', i3 should not crash.
# See issue: #3402
###############################################################################
$target_ws = fresh_workspace;
$S = open_window;
open_window;
cmd 'splitv';
$M = open_window;
cmd 'mark target';
cmd 'focus parent, floating enable, focus child';
cmd '[id="' . $S->{id} . '"] move container to mark target';
does_i3_live;
# Note: this is not actively supported behavior.
$nodes = get_ws($target_ws)->{floating_nodes}->[0]->{nodes}->[0]->{nodes};
is(1, (grep { $_->{window} == $S->{id} } @{$nodes}), 'tiling container moved inside floating container');
###############################################################################
# Given 'S' and 'M' are the same container, when 'S' is moved to 'M', then
# the command is ignored.