aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2025-03-26 19:34:44 +0100
committerFurkan Sahin <furkan-dev@proton.me>2025-03-26 19:34:44 +0100
commitfa6115fb5c6ee599455145f7e9425e7b6b143be3 (patch)
tree9cdf42ad567985bc869537ce54b7b26e0c5ed877
parente8c910f2aee602706cc1f6aec1af80f9e50c622d (diff)
Fix tabbed/stacking container height regression
Commit faed848 added a bounds check on `height - title_bar_height`, repurposing the local variable `height` in an attempt to DRY out the expression. However, because re-assignment occurs inside the loop body, its result would leak across loop iterations, compounding its effect and leading to the artifact reported in issue #8625, where each child except the first in a tabbed container would acquire a visible waterline. Introduce a second variable and reset it in each loop iteration to get rid of the waterline. Fixes #8625.
-rw-r--r--sway/desktop/transaction.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c
index 16ce8e2e..01fe3128 100644
--- a/sway/desktop/transaction.c
+++ b/sway/desktop/transaction.c
@@ -312,9 +312,9 @@ static void arrange_children(enum sway_container_layout layout, list_t *children
wlr_scene_node_set_position(&child->scene_tree->node, 0, title_bar_height);
wlr_scene_node_reparent(&child->scene_tree->node, content);
- height -= title_bar_height;
- if (activated && width > 0 && height > 0) {
- arrange_container(child, width, height, title_bar_height == 0, 0);
+ int net_height = height - title_bar_height;
+ if (activated && width > 0 && net_height > 0) {
+ arrange_container(child, width, net_height, title_bar_height == 0, 0);
} else {
disable_container(child);
}
@@ -341,9 +341,9 @@ static void arrange_children(enum sway_container_layout layout, list_t *children
wlr_scene_node_set_position(&child->scene_tree->node, 0, title_height);
wlr_scene_node_reparent(&child->scene_tree->node, content);
- height -= title_bar_height;
- if (activated && width > 0 && height > 0) {
- arrange_container(child, width, height, title_bar_height == 0, 0);
+ int net_height = height - title_bar_height;
+ if (activated && width > 0 && net_height > 0) {
+ arrange_container(child, width, net_height, title_bar_height == 0, 0);
} else {
disable_container(child);
}