From 514fcc20a73feec88f9a912a8dedf7eac40ca55b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 2 Mar 2023 17:22:27 +0100 Subject: [PATCH] render: resize: call xdg_toplevel_set_min_size() This is a hint to the compositor, not to set a smaller size than this. --- CHANGELOG.md | 1 + render.c | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b11bbc0..4fc80821 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -125,6 +125,7 @@ into the double-width glyph ([#1256][1256]). * Wayland protocol violation when ack:ing a configure event for an unmapped surface ([#1249][1249]). +* `xdg\_toplevel::set_min_size()` not being called. [1173]: https://codeberg.org/dnkl/foot/issues/1173 [1190]: https://codeberg.org/dnkl/foot/issues/1190 diff --git a/render.c b/render.c index b1c56bbc..9c701000 100644 --- a/render.c +++ b/render.c @@ -3885,9 +3885,9 @@ maybe_resize(struct terminal *term, int width, int height, bool force) const int min_cols = 2; const int min_rows = 1; - /* Minimum window size */ - const int min_width = min_cols * term->cell_width; - const int min_height = min_rows * term->cell_height; + /* Minimum window size (must be divisible by the scaling factor)*/ + const int min_width = (min_cols * term->cell_width + scale - 1) / scale * scale; + const int min_height = (min_rows * term->cell_height + scale - 1) / scale * scale; width = max(width, min_width); height = max(height, min_height); @@ -4132,12 +4132,6 @@ damage_view: term->stashed_height = term->height; } -#if 0 - /* TODO: doesn't include CSD title bar */ - xdg_toplevel_set_min_size( - term->window->xdg_toplevel, min_width / scale, min_height / scale); -#endif - { const bool title_shown = wayl_win_csd_titlebar_visible(term->window); const bool border_shown = wayl_win_csd_borders_visible(term->window); @@ -4147,6 +4141,11 @@ damage_view: const int border_width = border_shown ? term->conf->csd.border_width_visible : 0; + xdg_toplevel_set_min_size( + term->window->xdg_toplevel, + min_width / scale + 2 * border_width, + min_height / scale + title_height + 2 * border_width); + xdg_surface_set_window_geometry( term->window->xdg_surface, -border_width,