From 8a60f30423813f9c0938e1605939db71310c7b50 Mon Sep 17 00:00:00 2001 From: Kenny Levinsen Date: Tue, 25 Feb 2025 10:52:52 +0100 Subject: [PATCH] sway_text_node: Apply max_width when rendering max_width was applied to the source box, but not to the cairo surface. The cairo surface would therefore take on arbitrarily large dimensions according to the required dimensions to fit the text input, which if large enough would cause failures during output rendering and leave a black hole in the titlebar. --- sway/sway_text_node.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sway/sway_text_node.c b/sway/sway_text_node.c index 7c7813559..4bc8d996c 100644 --- a/sway/sway_text_node.c +++ b/sway/sway_text_node.c @@ -87,7 +87,7 @@ static void render_backing_buffer(struct text_buffer *buffer) { } float scale = buffer->scale; - int width = ceil(buffer->props.width * scale); + int width = ceil(get_text_width(&buffer->props) * scale); int height = ceil(buffer->props.height * scale); float *color = (float *)&buffer->props.color; float *background = (float *)&buffer->props.background; @@ -153,7 +153,7 @@ static void render_backing_buffer(struct text_buffer *buffer) { pixman_region32_init(&opaque); if (background[3] == 1) { pixman_region32_union_rect(&opaque, &opaque, 0, 0, - buffer->props.width, buffer->props.height); + get_text_width(&buffer->props), buffer->props.height); } wlr_scene_buffer_set_opaque_region(buffer->buffer_node, &opaque); pixman_region32_fini(&opaque);