Fix invalid pointers when using resize grow width on first/last siblings

This commit is contained in:
Ryan Dwyer 2019-01-15 08:17:41 +10:00
parent 2024f1da72
commit 289130430f

View file

@ -173,8 +173,17 @@ void container_resize_tiled(struct sway_container *con,
int index = container_sibling_index(con); int index = container_sibling_index(con);
if (axis == AXIS_HORIZONTAL || axis == AXIS_VERTICAL) { if (axis == AXIS_HORIZONTAL || axis == AXIS_VERTICAL) {
prev = siblings->items[index - 1]; if (index == 0) {
next = siblings->items[index + 1]; next = siblings->items[1];
} else if (index == siblings->length - 1) {
// Convert edge to top/left
next = con;
con = siblings->items[index - 1];
amount = -amount;
} else {
prev = siblings->items[index - 1];
next = siblings->items[index + 1];
}
} else if (axis == WLR_EDGE_TOP || axis == WLR_EDGE_LEFT) { } else if (axis == WLR_EDGE_TOP || axis == WLR_EDGE_LEFT) {
if (!sway_assert(index > 0, "Didn't expect first child")) { if (!sway_assert(index > 0, "Didn't expect first child")) {
return; return;