ppt *= -1;
}
- if (con_is_floating(focused)) {
+ Con *floating_con;
+ if ((floating_con = con_inside_floating(focused))) {
printf("floating resize\n");
if (direction == TOK_UP) {
- focused->parent->rect.y -= px;
- focused->parent->rect.height += px;
+ floating_con->rect.y -= px;
+ floating_con->rect.height += px;
} else if (direction == TOK_DOWN) {
- focused->parent->rect.height += px;
+ floating_con->rect.height += px;
} else if (direction == TOK_LEFT) {
- focused->parent->rect.x -= px;
- focused->parent->rect.width += px;
+ floating_con->rect.x -= px;
+ floating_con->rect.width += px;
} else {
- focused->parent->rect.width += px;
+ floating_con->rect.width += px;
}
} else {
LOG("tiling resize\n");
--- /dev/null
+#!perl
+# vim:ts=4:sw=4:expandtab
+#
+# Regression: resizing a floating split container leads to a crash.
+# (Ticket #588, present until 4412ccbe5a4fad8a4cd594e6f10f937515a4d37c)
+#
+use i3test;
+
+my $tmp = fresh_workspace;
+
+my $first = open_window;
+cmd 'split v';
+my $second = open_window;
+
+cmd 'focus parent';
+cmd 'floating toggle';
+cmd 'layout stacking';
+
+cmd 'resize grow up 10 px or 10 ppt';
+
+does_i3_live;
+
+done_testing;