]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Fix crash when moving a floating Con to a different workspace, add testcase...
authorMichael Stapelberg <michael@stapelberg.de>
Mon, 29 Nov 2010 19:20:44 +0000 (20:20 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 29 Nov 2010 19:20:44 +0000 (20:20 +0100)
src/con.c
testcases/t/42-regress-move-floating.t [new file with mode: 0644]

index ba15279e8c35ad483e658f97e12804f117b50dc6..ab06cfde47c30391117984da0a157894521fac52 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -415,6 +415,11 @@ void con_toggle_fullscreen(Con *con) {
  *
  */
 void con_move_to_workspace(Con *con, Con *workspace) {
+    if (con_is_floating(con)) {
+        DLOG("Using FLOATINGCON instead\n");
+        con = con->parent;
+    }
+
     /* 1: save the container which is going to be focused after the current
      * container is moved away */
     Con *focus_next = con_next_focused(con);
diff --git a/testcases/t/42-regress-move-floating.t b/testcases/t/42-regress-move-floating.t
new file mode 100644 (file)
index 0000000..2fc1417
--- /dev/null
@@ -0,0 +1,19 @@
+#!perl
+# vim:ts=4:sw=4:expandtab
+#
+# Regression: move a floating window to a different workspace crashes i3
+#
+use i3test tests => 1;
+use X11::XCB qw(:all);
+
+my $tmp = get_unused_workspace();
+my $otmp = get_unused_workspace();
+cmd "workspace $tmp";
+
+cmd 'open';
+cmd 'mode toggle';
+cmd "move workspace $otmp";
+
+my $tree = i3('/tmp/nestedcons')->get_tree->recv;
+my @nodes = @{$tree->{nodes}};
+ok(@nodes > 0, 'i3 still lives');