[gtk/css-line-height2: 1/9] css: Translate line-height to a Pango




commit a73ba4c59e1bb648978f486f6c90003666c48963
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Aug 7 11:17:54 2021 -0400

    css: Translate line-height to a Pango
    
    Pango 1.50 introduces a line-height attribute. Use it.
    This is enough to make line-height work for labels
    and entries.

 gtk/gtkcssstyle.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
---
diff --git a/gtk/gtkcssstyle.c b/gtk/gtkcssstyle.c
index 54aa0e7d23..698d3e0f82 100644
--- a/gtk/gtkcssstyle.c
+++ b/gtk/gtkcssstyle.c
@@ -33,6 +33,7 @@
 #include "gtkcssstringvalueprivate.h"
 #include "gtkcssfontvariationsvalueprivate.h"
 #include "gtkcssfontfeaturesvalueprivate.h"
+#include "gtkcsslineheightvalueprivate.h"
 #include "gtkcssstylepropertyprivate.h"
 #include "gtkcsstransitionprivate.h"
 #include "gtkstyleanimationprivate.h"
@@ -439,6 +440,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
   const GdkRGBA *color;
   const GdkRGBA *decoration_color;
   int letter_spacing;
+  double height;
   GtkCssFontVariantLigature ligatures;
   GtkCssFontVariantNumeric numeric;
   GtkCssFontVariantEastAsian east_asian;
@@ -485,6 +487,18 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
       attrs = add_pango_attr (attrs, pango_attr_letter_spacing_new (letter_spacing * PANGO_SCALE));
     }
 
+#if PANGO_VERSION_CHECK(1, 49, 0)
+  /* line-height */
+  height = gtk_css_line_height_value_get (style->font->line_height);
+  if (height != 0.0)
+    {
+      if (gtk_css_number_value_get_dimension (style->font->line_height) == GTK_CSS_DIMENSION_LENGTH)
+        attrs = add_pango_attr (attrs, pango_attr_line_height_new_absolute (height * PANGO_SCALE));
+      else
+        attrs = add_pango_attr (attrs, pango_attr_line_height_new (height));
+    }
+#endif
+
   /* OpenType features */
 
   s = NULL;


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