From: tokyo4j Date: Sat, 27 Apr 2024 09:15:53 +0000 (+0900) Subject: ssd: don't update ssd if view width is too small X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=2603dbf396bddeebefeb8e6e1f4ef7cce3b4eb31;p=proto%2Flabwc.git ssd: don't update ssd if view width is too small Clients can ignore the requsted geometry and negative widths could be passed to `wlr_scene_rect_set_size()` in `ssd_titlebar_update()` or in `ssd_border_update()`. --- diff --git a/src/ssd/ssd.c b/src/ssd/ssd.c index 518602a6..9c96ef7b 100644 --- a/src/ssd/ssd.c +++ b/src/ssd/ssd.c @@ -229,6 +229,16 @@ ssd_update_geometry(struct ssd *ssd) int eff_width = current.width; int eff_height = view_effective_height(ssd->view, /* use_pending */ false); + if (eff_width > 0 && eff_width < LAB_MIN_VIEW_WIDTH) { + /* + * Prevent negative values in calculations like + * `width - SSD_BUTTON_WIDTH * SSD_BUTTON_COUNT` + */ + wlr_log(WLR_ERROR, + "view width is smaller than its minimal value"); + return; + } + if (eff_width == cached.width && eff_height == cached.height) { if (current.x != cached.x || current.y != cached.y) { /* Dynamically resize extents based on position and usable_area */