[gnome-shell/wip/carlosg/fully-transparent-text] st: Honor alpha range specified by pango_attr_foreground_alpha_new()



commit bc8425a4493e56fe75a88049e4aee6310fd32bb3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Mar 28 16:38:14 2020 +0100

    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).

 src/st/st-private.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/src/st/st-private.c b/src/st/st-private.c
index e75e10788b..70d31ef76c 100644
--- a/src/st/st-private.c
+++ b/src/st/st-private.c
@@ -134,7 +134,16 @@ _st_set_text_from_style (ClutterText *text,
 
   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);
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]