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;
|
||||
}
|
||||
|
||||
if (con->type == CT_WORKSPACE) {
|
||||
if (target->type == CT_WORKSPACE) {
|
||||
DLOG("target container is a workspace, simply moving the container there.\n");
|
||||
con_move_to_workspace(con, target, true, false, false);
|
||||
return true;
|
||||
|
|
|
@ -336,6 +336,50 @@ sync_with_i3;
|
|||
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue