From d57d2e0e368bbf0b94246a3f6dbeb26c7b048993 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Wed, 8 Jun 2022 20:27:50 +0100 Subject: [PATCH] scene/layer_shell_v1.c: fix bug in width/height calculations ...in wlr_scene_layer_surface_v1_configure() Reproduce bug with waybar by setting `"margin": 5,` in ~/.config/waybar/config. It will result in the right edge of the panel extending outside the edge of the output. The bug can also be reproduced with gtk-layer-demo by anchoring left/right/top/bottom and setting respective margins Relates-to: https://github.com/labwc/labwc/issues/382 --- types/scene/layer_shell_v1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/scene/layer_shell_v1.c b/types/scene/layer_shell_v1.c index eb0bc76e..b674cd36 100644 --- a/types/scene/layer_shell_v1.c +++ b/types/scene/layer_shell_v1.c @@ -94,7 +94,7 @@ void wlr_scene_layer_surface_v1_configure( if (box.width == 0) { box.x = bounds.x + state->margin.left; box.width = bounds.width - - state->margin.left + state->margin.right; + (state->margin.left + state->margin.right); } else if (state->anchor & ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT && state->anchor & ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT) { box.x = bounds.x + bounds.width/2 -box.width/2; @@ -110,7 +110,7 @@ void wlr_scene_layer_surface_v1_configure( if (box.height == 0) { box.y = bounds.y + state->margin.top; box.height = bounds.height - - state->margin.top + state->margin.bottom; + (state->margin.top + state->margin.bottom); } else if (state->anchor & ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP && state->anchor & ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM) { box.y = bounds.y + bounds.height/2 - box.height/2;