diff options
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r-- | pango/pango-layout.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 57ec7606..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) @@ -5213,8 +5213,15 @@ pango_layout_line_get_extents_and_height (PangoLayoutLine *line, tmp_list = tmp_list->next; } - if (logical_rect && !line->runs) - pango_layout_line_get_empty_extents (line, logical_rect); + if (!line->runs) + { + PangoRectangle r, *rect; + + rect = logical_rect ? logical_rect : &r; + pango_layout_line_get_empty_extents (line, rect); + if (height) + *height = rect->height; + } if (caching) { |