From 1768e0e4fde11a6dfdf2336536edce3c954f4474 Mon Sep 17 00:00:00 2001 From: Lauris Kaplinski Date: Fri, 8 Sep 2000 22:32:24 +0000 Subject: Some UTF-8 fixes and experimental 16-bit unicode font support svn path=/trunk/; revision=5279 --- widgets/ChangeLog | 4 ++++ widgets/e-text/e-text.c | 10 +++++----- widgets/text/e-text.c | 10 +++++----- 3 files changed, 14 insertions(+), 10 deletions(-) (limited to 'widgets') diff --git a/widgets/ChangeLog b/widgets/ChangeLog index 09425c22f6..00226f5cb0 100644 --- a/widgets/ChangeLog +++ b/widgets/ChangeLog @@ -1,3 +1,7 @@ +2000-09-08 Lauris Kaplinski + + * e-text/e-text.c (calc_line_widths): Fix byte/char confusion + 2000-08-30 Federico Mena Quintero * e-paned/e-hpaned.c (e_hpaned_motion): Do not flicker while diff --git a/widgets/e-text/e-text.c b/widgets/e-text/e-text.c index ed87f21c95..cb064c9c40 100644 --- a/widgets/e-text/e-text.c +++ b/widgets/e-text/e-text.c @@ -683,8 +683,8 @@ calc_line_widths (EText *text) { struct line *lines; int i; - int j; gdouble clip_width; + gchar *p; /* Make sure line has been split */ if (text->text && text->num_lines == 0) @@ -721,10 +721,10 @@ calc_line_widths (EText *text) clip_width >= 0) { if (text->font) { lines->ellipsis_length = 0; - for (j = 0; j < lines->length; j++ ) { - if (e_font_utf8_text_width (text->font, E_FONT_PLAIN, lines->text, j) + text->ellipsis_width - <= clip_width) - lines->ellipsis_length = j; + for (p = lines->text; p && *p && (p - lines->text) < lines->length; p = unicode_next_utf8 (p)) { + if (e_font_utf8_text_width (text->font, E_FONT_PLAIN, lines->text, p - lines->text) + + text->ellipsis_width <= clip_width) + lines->ellipsis_length = p - lines->text; else break; } diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c index ed87f21c95..cb064c9c40 100644 --- a/widgets/text/e-text.c +++ b/widgets/text/e-text.c @@ -683,8 +683,8 @@ calc_line_widths (EText *text) { struct line *lines; int i; - int j; gdouble clip_width; + gchar *p; /* Make sure line has been split */ if (text->text && text->num_lines == 0) @@ -721,10 +721,10 @@ calc_line_widths (EText *text) clip_width >= 0) { if (text->font) { lines->ellipsis_length = 0; - for (j = 0; j < lines->length; j++ ) { - if (e_font_utf8_text_width (text->font, E_FONT_PLAIN, lines->text, j) + text->ellipsis_width - <= clip_width) - lines->ellipsis_length = j; + for (p = lines->text; p && *p && (p - lines->text) < lines->length; p = unicode_next_utf8 (p)) { + if (e_font_utf8_text_width (text->font, E_FONT_PLAIN, lines->text, p - lines->text) + + text->ellipsis_width <= clip_width) + lines->ellipsis_length = p - lines->text; else break; } -- cgit v1.2.3