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
This commit is contained in:

committed by
Mike Kestner

parent
42a22586d2
commit
1f8aee1ac6
@ -486,19 +486,24 @@ 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 *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;
|
||||
while (*last_char == '.')
|
||||
last_char = g_utf8_prev_char (last_char);
|
||||
last_char = g_utf8_find_prev_char (line_text, last_char);
|
||||
if (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));
|
||||
g_free (line_text);
|
||||
new_text = g_strconcat (line_text, ellipsis, NULL);
|
||||
pango_layout_set_text (layout, new_text, -1);
|
||||
g_free (new_text);
|
||||
}
|
||||
g_free (line_text);
|
||||
}
|
||||
|
||||
switch (ect->justify) {
|
||||
case GTK_JUSTIFY_RIGHT:
|
||||
|
Reference in New Issue
Block a user