]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Transfer 'percent' factor when splitting, add testcase for resizing
authorMichael Stapelberg <michael@stapelberg.de>
Mon, 29 Nov 2010 10:24:12 +0000 (11:24 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 29 Nov 2010 10:24:12 +0000 (11:24 +0100)
src/tree.c
testcases/t/41-resize.t [new file with mode: 0644]

index f24b91a1f0c40e81be3e527edaa3d8fa4265f07a..f1b521e85900ab55e55059c6b0db48ea8d280f53 100644 (file)
@@ -267,7 +267,11 @@ void tree_split(Con *con, orientation_t orientation) {
     new->parent = parent;
     new->orientation = orientation;
 
-    /* 3: add it as a child to the new Con */
+    /* 3: swap 'percent' (resize factor) */
+    new->percent = con->percent;
+    con->percent = 0.0;
+
+    /* 4: add it as a child to the new Con */
     con_attach(con, new, false);
 }
 
diff --git a/testcases/t/41-resize.t b/testcases/t/41-resize.t
new file mode 100644 (file)
index 0000000..050b92a
--- /dev/null
@@ -0,0 +1,49 @@
+#!perl
+# vim:ts=4:sw=4:expandtab
+# Tests resizing tiling containers
+use i3test tests => 6;
+use X11::XCB qw(:all);
+use Time::HiRes qw(sleep);
+
+BEGIN {
+    use_ok('X11::XCB::Window');
+}
+
+my $x = X11::XCB::Connection->new;
+
+my $tmp = get_unused_workspace();
+cmd "workspace $tmp";
+
+cmd 'split v';
+
+my $top = open_standard_window($x);
+sleep 0.25;
+my $bottom = open_standard_window($x);
+sleep 0.25;
+
+diag("top = " . $top->id . ", bottom = " . $bottom->id);
+
+is($x->input_focus, $bottom->id, 'Bottom window focused');
+
+############################################################
+# resize
+############################################################
+
+cmd 'resize grow up 10 px or 25 ppt';
+
+my ($nodes, $focus) = get_ws_content($tmp);
+
+is($nodes->[0]->{percent}, 0.25, 'top window got only 25%');
+is($nodes->[1]->{percent}, 0.75, 'bottom window got 75%');
+
+
+############################################################
+# split and check if the 'percent' factor is still correct
+############################################################
+
+cmd 'split h';
+
+($nodes, $focus) = get_ws_content($tmp);
+
+is($nodes->[0]->{percent}, 0.25, 'top window got only 25%');
+is($nodes->[1]->{percent}, 0.75, 'bottom window got 75%');