From a540fe41309ccf6f6a1d3e3d0f1ce46c7cb3ab19 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sat, 23 Mar 2019 16:33:58 +0100 Subject: [PATCH] st: Round CSS units to the nearest multiple of the scale factor Actors themed through CSS should ideally get sizes and positions that conform to the "pixel grid". A notorious example is the panel that has a height of 1.86em. On unchanged font settings and hidpi that translates to 55px, which leaves the workarea with "half pixels" that hidpi wayland applications don't know how to fully cover. If the requested height is a multiple of the scale factor, the workarea and maximized applications can then work on full pixels. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/91 --- src/st/st-theme-node.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c index c05ca78fc..8a6ebf03f 100644 --- a/src/st/st-theme-node.c +++ b/src/st/st-theme-node.c @@ -1136,10 +1136,14 @@ get_length_from_term_int (StThemeNode *node, { double value; GetFromTermResult result; + int scale_factor; result = get_length_from_term (node, term, use_parent_font, &value); if (result == VALUE_FOUND) - *length = (int) (0.5 + value); + { + g_object_get (node->context, "scale-factor", &scale_factor, NULL); + *length = (int) ((value / scale_factor) + 0.5) * scale_factor; + } return result; }