]> git.sur5r.net Git - i3/i3/commitdiff
Fix crash when moving container to marked workspace 3231/head
authorOrestis Floros <orestisf1993@gmail.com>
Sat, 7 Apr 2018 18:43:29 +0000 (21:43 +0300)
committerOrestis Floros <orestisf1993@gmail.com>
Sat, 7 Apr 2018 18:58:55 +0000 (21:58 +0300)
Was a small typo.

This also has the (positive) side-effect of allowing to move all the
content of a marked workspace next to the target container, see added
tests.

src/con.c
testcases/t/243-move-to-mark.t

index 2180ad8816ab005af8fd3e1b5175e112a4de897d..deb6555846d05311acd05269a7e84fca53e45bad 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -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;
index 25d13333fd81e9fa9d81a9a1ae67585c6035eae7..c6b67f35ac7a38db7a64118607041b4c40d9e0fe 100644 (file)
@@ -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;