diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | pango/ellipsize.c | 8 | ||||
-rw-r--r-- | pango/pango-glyph-item.c | 2 |
3 files changed, 13 insertions, 6 deletions
@@ -1,5 +1,14 @@ 2007-08-07 Behdad Esfahbod <behdad@gnome.org> + Bug 464270 – ellipsize doesn't work consistent + + * pango/pango-glyph-item.c (_pango_glyph_item_iter_prev_cluster): + Fix. Was jumping two clusters at a time. Oops! + + * pango/ellipsize.c (init_state): Minor cleanup. + +2007-08-07 Behdad Esfahbod <behdad@gnome.org> + * MAINTAINERS: Add Userid field. 2007-08-07 Behdad Esfahbod <behdad@gnome.org> diff --git a/pango/ellipsize.c b/pango/ellipsize.c index fb2bce60..aa49720d 100644 --- a/pango/ellipsize.c +++ b/pango/ellipsize.c @@ -114,7 +114,7 @@ init_state (EllipsizeState *state, PangoAttrList *attrs) { GSList *l; - int i, j; + int i; int start_offset; state->layout = line->layout; @@ -130,11 +130,7 @@ init_state (EllipsizeState *state, for (l = line->runs, i = 0; l; l = l->next, i++) { PangoGlyphItem *run = l->data; - int width = 0; - - for (j = 0; j < run->glyphs->num_glyphs; j++) - width += run->glyphs->glyphs[j].geometry.width; - + int width = pango_glyph_string_get_width (run->glyphs); state->run_info[i].run = run; state->run_info[i].width = width; state->run_info[i].start_offset = start_offset; diff --git a/pango/pango-glyph-item.c b/pango/pango-glyph-item.c index 157bb150..07b844bc 100644 --- a/pango/pango-glyph-item.c +++ b/pango/pango-glyph-item.c @@ -280,6 +280,7 @@ _pango_glyph_item_iter_prev_cluster (PangoGlyphItemIter *iter) if (glyphs->log_clusters[glyph_index] != cluster) { + glyph_index++; iter->start_index = item->offset + glyphs->log_clusters[glyph_index]; iter->start_char -= g_utf8_strlen (iter->text + iter->start_index, iter->end_index - iter->start_index); @@ -303,6 +304,7 @@ _pango_glyph_item_iter_prev_cluster (PangoGlyphItemIter *iter) if (glyphs->log_clusters[glyph_index] != cluster) { + glyph_index--; iter->start_index = item->offset + glyphs->log_clusters[glyph_index]; iter->start_char -= g_utf8_strlen (iter->text + iter->start_index, iter->end_index - iter->start_index); |