summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-05-09 03:51:18 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-05-09 03:51:18 +0000
commit2185eed3e3979e63df73e9248101318839aa5242 (patch)
tree1c796070065d6e53c13d809847ca38de2f2c6ec8
parent71ad5cbaf0fea521a526a5ce341b3ea17b03c9cf (diff)
parent10895f2d9794fb36820c827a3a68b3ee1559ac20 (diff)
downloadpango-2185eed3e3979e63df73e9248101318839aa5242.tar.gz
Merge branch 'fix-layout-line-height' into 'master'
Make pango_layout_line_get_height work Closes #487 See merge request GNOME/pango!327
-rw-r--r--pango/pango-layout.c4
-rw-r--r--tests/testmisc.c21
2 files changed, 23 insertions, 2 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index c483526f..2fe6c9dc 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 ();
}