[pango/fix-layout-line-height] Make pango_layout_line_get_height work




commit 10895f2d9794fb36820c827a3a68b3ee1559ac20
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat May 8 23:43:35 2021 -0400

    Make pango_layout_line_get_height work
    
    We were just never setting the height. Ouch!
    Test included.
    
    Fixes: #487

 pango/pango-layout.c |  4 ++--
 tests/testmisc.c     | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)
---
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 57ec7606..df7607fe 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -4982,7 +4982,7 @@ pango_layout_run_get_extents_and_height (PangoLayoutRun *run,
   gboolean has_underline;
   gboolean has_overline;
 
-  if (G_UNLIKELY (!run_ink && !run_logical))
+  if (G_UNLIKELY (!run_ink && !run_logical && !height))
     return;
 
   pango_layout_get_item_properties (run->item, &properties);
@@ -5107,7 +5107,7 @@ pango_layout_line_get_extents_and_height (PangoLayoutLine *line,
 
   g_return_if_fail (LINE_IS_VALID (line));
 
-  if (G_UNLIKELY (!ink_rect && !logical_rect))
+  if (G_UNLIKELY (!ink_rect && !logical_rect && !height))
     return;
 
   switch (private->cache_status)
diff --git a/tests/testmisc.c b/tests/testmisc.c
index 1697b7cd..06b39a7a 100644
--- a/tests/testmisc.c
+++ b/tests/testmisc.c
@@ -101,6 +101,26 @@ test_language_emoji_crash (void)
   g_assert (scripts == NULL || num > 0);
 }
 
+static void
+test_line_height (void)
+{
+  PangoContext *context;
+  PangoLayout *layout;
+  PangoLayoutLine *line;
+  int height = 0;
+
+  context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
+  layout = pango_layout_new (context);
+  pango_layout_set_text (layout, "one\ttwo", -1);
+  line = pango_layout_get_line_readonly (layout, 0);
+  pango_layout_line_get_height (line, &height);
+
+  g_assert_cmpint (height, >, 0);
+
+  g_object_unref (layout);
+  g_object_unref (context);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -111,6 +131,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/layout/itemize-utf8", test_itemize_utf8);
   g_test_add_func ("/layout/short-string-crash", test_short_string_crash);
   g_test_add_func ("/language/emoji-crash", test_language_emoji_crash);
+  g_test_add_func ("/layout/line-height", test_line_height);
 
   return g_test_run ();
 }


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