diff options
author | Mike Kestner <mkestner@ximian.com> | 2003-04-23 02:54:55 +0800 |
---|---|---|
committer | Mike Kestner <mkestner@src.gnome.org> | 2003-04-23 02:54:55 +0800 |
commit | 1f8aee1ac65ffd2d4ac09c58072a74ed7718ee1b (patch) | |
tree | 9ad5eed9c61c6c865e913fbb0d9cf561ce9c92f0 /widgets/table/e-cell-text.c | |
parent | 42a22586d2dc98cbae74db6a1281ff862167f930 (diff) | |
download | gsoc2013-evolution-1f8aee1ac65ffd2d4ac09c58072a74ed7718ee1b.tar.gz gsoc2013-evolution-1f8aee1ac65ffd2d4ac09c58072a74ed7718ee1b.tar.zst gsoc2013-evolution-1f8aee1ac65ffd2d4ac09c58072a74ed7718ee1b.zip |
use unicode ellipsis char for breaking lines. Use g_utf8_find_prev_char
2003-04-21 Mike Kestner <mkestner@ximian.com>
* e-cell-text.c (build_layout): use unicode ellipsis char for
breaking lines. Use g_utf8_find_prev_char and check for failure
so that we don't tight loop for small cells that can't display
any chars.
svn path=/trunk/; revision=20924
Diffstat (limited to 'widgets/table/e-cell-text.c')
-rw-r--r-- | widgets/table/e-cell-text.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/widgets/table/e-cell-text.c b/widgets/table/e-cell-text.c index 4295862c32..8bfcf384d0 100644 --- a/widgets/table/e-cell-text.c +++ b/widgets/table/e-cell-text.c @@ -486,18 +486,23 @@ build_layout (ECellTextView *text_view, int row, const char *text, gint width) pango_layout_set_width (layout, width * PANGO_SCALE); pango_layout_set_wrap (layout, PANGO_WRAP_CHAR); - while (pango_layout_get_line_count (layout) > 1) { + if (pango_layout_get_line_count (layout) > 1) { PangoLayoutLine *line = pango_layout_get_line (layout, 0); gchar *line_text = g_strdup (pango_layout_get_text (layout)); - gchar *last_char = g_utf8_prev_char (line_text + line->length - 1); - gchar *new_text; - while (*last_char == '.') - last_char = g_utf8_prev_char (last_char); - *last_char = '\0'; - new_text = g_strconcat (line_text, " ...", NULL); - pango_layout_set_text (layout, new_text, g_utf8_strlen (new_text, -1)); + gchar *last_char = g_utf8_find_prev_char (line_text, line_text + line->length - 1); + gchar ellipsis[7]; + int len = g_unichar_to_utf8 (8230, ellipsis); + ellipsis[len] = '\0'; + while (last_char && pango_layout_get_line_count (layout) > 1) { + gchar *new_text; + last_char = g_utf8_find_prev_char (line_text, last_char); + if (last_char) + *last_char = '\0'; + new_text = g_strconcat (line_text, ellipsis, NULL); + pango_layout_set_text (layout, new_text, -1); + g_free (new_text); + } g_free (line_text); - g_free (new_text); } switch (ect->justify) { |