render: scale titlebars correctly when straddling outputs

When a container straddles multiple outputs, the title bar is only rendered
at the scale of the "effective" output. If the title bar straddles onto
another output with a different scale factor, it was drawn at the wrong size.

In this commit, we take into consideration the scale the title was rendered
at and scale it accordingly so that it appears at the right size on the other
outputs.

This fixes #6054.
This commit is contained in:
Quantum 2021-02-22 00:30:36 -05:00 committed by Tudor Brindus
parent f58f054c87
commit e0a94bee8d

View file

@ -518,6 +518,10 @@ static void render_titlebar(struct sway_output *output,
struct wlr_box texture_box; struct wlr_box texture_box;
wlr_texture_get_size(title_texture, wlr_texture_get_size(title_texture,
&texture_box.width, &texture_box.height); &texture_box.width, &texture_box.height);
float title_scale = container_get_effective_output(con)->wlr_output->scale;
texture_box.width = texture_box.width * output_scale / title_scale;
texture_box.height = texture_box.height * output_scale / title_scale;
ob_title_width = texture_box.width; ob_title_width = texture_box.width;
// The title texture might be shorter than the config->font_height, // The title texture might be shorter than the config->font_height,