Merge pull request #3231 from orestisf1993/target-is-a-workspace
Fix crash when moving container to marked workspace
This commit is contained in:
commit
b688164235
|
@ -1305,7 +1305,7 @@ bool con_move_to_mark(Con *con, const char *mark) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (con->type == CT_WORKSPACE) {
|
if (target->type == CT_WORKSPACE) {
|
||||||
DLOG("target container is a workspace, simply moving the container there.\n");
|
DLOG("target container is a workspace, simply moving the container there.\n");
|
||||||
con_move_to_workspace(con, target, true, false, false);
|
con_move_to_workspace(con, target, true, false, false);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -336,6 +336,50 @@ sync_with_i3;
|
||||||
|
|
||||||
does_i3_live;
|
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'.
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
fresh_workspace;
|
||||||
|
$S = open_window;
|
||||||
|
$target_ws = fresh_workspace;
|
||||||
|
$M = $target_ws;
|
||||||
|
cmd 'mark target';
|
||||||
|
|
||||||
|
cmd '[id="' . $S->{id} . '"] move container to mark target';
|
||||||
|
sync_with_i3;
|
||||||
|
|
||||||
|
does_i3_live;
|
||||||
|
|
||||||
|
($nodes, $focus) = get_ws_content($target_ws);
|
||||||
|
is(@{$nodes}, 1, 'tiling container moved to the target workspace');
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Given 'S' and 'M' where 'S' is a workspace and 'M' is a container on a
|
||||||
|
# different workspace, then all the contents of workspace 'S' end up in 'M's
|
||||||
|
# workspace.
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
$S = fresh_workspace;
|
||||||
|
cmd 'mark S';
|
||||||
|
open_window;
|
||||||
|
open_window;
|
||||||
|
cmd 'splitv';
|
||||||
|
open_window;
|
||||||
|
open_floating_window;
|
||||||
|
$target_ws = fresh_workspace;
|
||||||
|
$M = open_window;
|
||||||
|
cmd 'mark target';
|
||||||
|
|
||||||
|
cmd '[con_mark=S] move container to mark target';
|
||||||
|
sync_with_i3;
|
||||||
|
|
||||||
|
($nodes, $focus) = get_ws_content($target_ws);
|
||||||
|
is(@{$nodes}, 2, 'there is a window and a container with the contents of the original workspace');
|
||||||
|
is($nodes->[0]->{window}, $M->{id}, 'M remains the first window');
|
||||||
|
is(@{get_ws($target_ws)->{floating_nodes}}, 1, 'target workspace has the floating container');
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
Loading…
Reference in New Issue