]> git.sur5r.net Git - i3/i3/commitdiff
fix resizing floating windows by height
authorJoel Stemmer <stemmertech@gmail.com>
Sat, 18 Aug 2012 13:25:00 +0000 (15:25 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 22 Aug 2012 14:01:40 +0000 (16:01 +0200)
When resizing floating windows, changing the height was not correctly
handled. This commit fixes that and adds testcases for shrinking and
growing the width and height of floating windows.

src/commands.c
testcases/t/141-resize.t

index 66270f7599fd8e406bd1d5ba93e39d3a73373acf..0cd7852bc7f089e1d33a32b7a85cb35150e53942 100644 (file)
@@ -490,7 +490,7 @@ static void cmd_resize_floating(I3_CMD, char *way, char *direction, Con *floatin
     if (strcmp(direction, "up") == 0) {
         floating_con->rect.y -= px;
         floating_con->rect.height += px;
-    } else if (strcmp(direction, "down") == 0) {
+    } else if (strcmp(direction, "down") == 0 || strcmp(direction, "height") == 0) {
         floating_con->rect.height += px;
     } else if (strcmp(direction, "left") == 0) {
         floating_con->rect.x -= px;
index 91aeca50314cc899283c2873254a274cf9d77270..4f84f213a8360a62c9395205f86a9887f15d8e25 100644 (file)
@@ -197,4 +197,48 @@ cmp_ok($content[0]->{rect}->{y}, '==', $oldrect->{y}, 'y the same as before');
 cmp_ok($content[0]->{rect}->{height}, '>', $oldrect->{height}, 'height bigger than before');
 cmp_ok($content[0]->{rect}->{width}, '==', $oldrect->{width}, 'width the same as before');
 
+# grow width
+$oldrect = $content[0]->{rect};
+
+cmd 'resize grow width 10px or 10ppt';
+
+@content = @{get_ws($tmp)->{floating_nodes}};
+cmp_ok($content[0]->{rect}->{x}, '==', $oldrect->{x}, 'x the same as before');
+cmp_ok($content[0]->{rect}->{y}, '==', $oldrect->{y}, 'y the same as before');
+cmp_ok($content[0]->{rect}->{height}, '==', $oldrect->{height}, 'height the same as before');
+cmp_ok($content[0]->{rect}->{width}, '>', $oldrect->{width}, 'width bigger than before');
+
+# shrink width
+$oldrect = $content[0]->{rect};
+
+cmd 'resize shrink width 10px or 10ppt';
+
+@content = @{get_ws($tmp)->{floating_nodes}};
+cmp_ok($content[0]->{rect}->{x}, '==', $oldrect->{x}, 'x the same as before');
+cmp_ok($content[0]->{rect}->{y}, '==', $oldrect->{y}, 'y the same as before');
+cmp_ok($content[0]->{rect}->{height}, '==', $oldrect->{height}, 'height the same as before');
+cmp_ok($content[0]->{rect}->{width}, '<', $oldrect->{width}, 'width smaller than before');
+
+# grow height
+$oldrect = $content[0]->{rect};
+
+cmd 'resize grow height 10px or 10ppt';
+
+@content = @{get_ws($tmp)->{floating_nodes}};
+cmp_ok($content[0]->{rect}->{x}, '==', $oldrect->{x}, 'x the same as before');
+cmp_ok($content[0]->{rect}->{y}, '==', $oldrect->{y}, 'y the same as before');
+cmp_ok($content[0]->{rect}->{height}, '>', $oldrect->{height}, 'height bigger than before');
+cmp_ok($content[0]->{rect}->{width}, '==', $oldrect->{width}, 'width the same as before');
+
+# shrink height
+$oldrect = $content[0]->{rect};
+
+cmd 'resize shrink height 10px or 10ppt';
+
+@content = @{get_ws($tmp)->{floating_nodes}};
+cmp_ok($content[0]->{rect}->{x}, '==', $oldrect->{x}, 'x the same as before');
+cmp_ok($content[0]->{rect}->{y}, '==', $oldrect->{y}, 'y the same as before');
+cmp_ok($content[0]->{rect}->{height}, '<', $oldrect->{height}, 'height smaller than before');
+cmp_ok($content[0]->{rect}->{width}, '==', $oldrect->{width}, 'width the same as before');
+
 done_testing;