diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-08-26 03:35:24 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-08-26 03:35:24 +0000 |
commit | a4260a6dcc0e056cbcd6b6f3766e8e9048c0042b (patch) | |
tree | 01eee3f56bdd22e96b5a753bd332b9ccd2db184b | |
parent | 564cfa077cc9debdbfa386244c303b2045d5405d (diff) | |
parent | cba1d740a50318f462a6b802ce7172b9711929d9 (diff) | |
download | pango-a4260a6dcc0e056cbcd6b6f3766e8e9048c0042b.tar.gz |
Merge branch 'matthiasc/for-main' into 'main'
pango-view: Don't omit the last caret position
See merge request GNOME/pango!441
-rw-r--r-- | utils/viewer-pangocairo.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/utils/viewer-pangocairo.c b/utils/viewer-pangocairo.c index 1c0494de..af4925e3 100644 --- a/utils/viewer-pangocairo.c +++ b/utils/viewer-pangocairo.c @@ -418,7 +418,9 @@ render_callback (PangoLayout *layout, { PangoRectangle rect; PangoLayoutRun *run; - const char *text, *start, *end, *p; + const char *text, *start, *p; + int x, y; + gboolean trailing; pango_layout_iter_get_run_extents (iter, NULL, &rect); run = pango_layout_iter_get_run_readonly (iter); @@ -427,25 +429,31 @@ render_callback (PangoLayout *layout, continue; text = pango_layout_get_text (layout); - start =text + run->item->offset; - end = start + run->item->length; - for (p = start; p < end; p = g_utf8_next_char (p)) - { - int x, y; + start = text + run->item->offset; + + y = pango_layout_iter_get_baseline (iter); + trailing = FALSE; + p = start; + for (int i = 0; i <= run->item->num_chars; i++) + { pango_glyph_string_index_to_x (run->glyphs, text + run->item->offset, run->item->length, &run->item->analysis, p - start, - FALSE, + trailing, &x); x += rect.x; - y = pango_layout_iter_get_baseline (iter); cairo_arc (cr, x / PANGO_SCALE, y / PANGO_SCALE, 3.0, 0, 2*G_PI); cairo_close_path (cr); cairo_fill (cr); + + if (i < run->item->num_chars) + p = g_utf8_next_char (p); + else + trailing = TRUE; } } while (pango_layout_iter_next_run (iter)); |