st: Honor alpha range specified by pango_attr_foreground_alpha_new()

This is documented as a value between 1 and 65536. However we were passing
a 0 value for 100% transparent colors, which is interpreted as "system
inherited" in pango_renderer_get_alpha() docs.

Ensure we respect this range by specifying the minimum allowed alpha (1)
if the color is fully transparent. If someone notices this 1/65535th change
I'll ask him how many pleiades can he count.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2504

(yes, again).
This commit is contained in:
Carlos Garnacho 2020-03-28 16:38:14 +01:00 committed by Florian Müllner
parent 8378c9c9e0
commit 656168543f

View File

@ -134,7 +134,16 @@ _st_set_text_from_style (ClutterText *text,
if (color.alpha != 255) if (color.alpha != 255)
{ {
PangoAttribute *alpha = pango_attr_foreground_alpha_new (color.alpha * 255); PangoAttribute *alpha;
/* An alpha value of 0 means "system inherited", so the
* minimum regular value is 1.
*/
if (color.alpha == 0)
alpha = pango_attr_foreground_alpha_new (1);
else
alpha = pango_attr_foreground_alpha_new (color.alpha * 255);
pango_attr_list_insert (attribs, alpha); pango_attr_list_insert (attribs, alpha);
} }