From 24cb66cd715b65a9bbdbf3d3de8f0c546aff35ba Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 11 Mar 2005 04:54:35 +0000 Subject: [PATCH] fix! textblokc word wrap and spec.in SVN revision: 13686 --- legacy/evas/evas.spec.in | 2 +- .../src/lib/canvas/evas_object_textblock.c | 47 ++++++++++++++----- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/legacy/evas/evas.spec.in b/legacy/evas/evas.spec.in index 7f1fd4c9e4..6b136ca996 100644 --- a/legacy/evas/evas.spec.in +++ b/legacy/evas/evas.spec.in @@ -7,7 +7,7 @@ Release: 1 License: BSD Group: System Environment/Libraries URL: http://www.enlightenment.org/ -Source: %{name}-%{version}_pre13.tar.gz +Source: %{name}-%{version}.tar.gz Packager: %{?_packager:%{_packager}}%{!?_packager:Michael Jennings } Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:The Enlightenment Project (http://www.enlightenment.org/)} Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}} diff --git a/legacy/evas/src/lib/canvas/evas_object_textblock.c b/legacy/evas/src/lib/canvas/evas_object_textblock.c index ac5de34d48..cc9241c6a0 100644 --- a/legacy/evas/src/lib/canvas/evas_object_textblock.c +++ b/legacy/evas/src/lib/canvas/evas_object_textblock.c @@ -974,7 +974,8 @@ evas_object_textblock_layout_internal(Evas_Object *obj, int w, int h, int *forma int pad_l = 0, pad_r = 0, pad_t = 0, pad_b = 0; int marginl = 0, marginr = 0; int ww, hh; - + int just_wrapped = 0; + o = (Evas_Object_Textblock *)(obj->object_data); ww = w; hh = h; @@ -1266,6 +1267,16 @@ evas_object_textblock_layout_internal(Evas_Object *obj, int w, int h, int *forma text = strdup(node->text); new_node: + if (just_wrapped) + { + int pos, chr; + + pos = 0; + chr = evas_common_font_utf8_get_next(text, &pos); + if (evas_object_textblock_char_is_white(chr)) + strcpy(text, text + pos); + } + just_wrapped = 0; /* FIXME: we cant do this - we need to be able to qury text * overflow amounts */ /* @@ -1408,23 +1419,33 @@ evas_object_textblock_layout_internal(Evas_Object *obj, int w, int h, int *forma } else { - chr = evas_common_font_utf8_get_next(text, &ppos); - if (ppos < 0) ppos = 0; - chrpos = ppos; - while ((evas_object_textblock_char_is_white(chr)) - && - (pos >= 0) && - (chr > 0)) + if (ppos == 0) { - ppos = pos; - chr = evas_common_font_utf8_get_prev(text, &pos); + nchrpos = 0; + chrpos--; + } + else + { + chr = evas_common_font_utf8_get_next(text, &ppos); + if (ppos < 0) ppos = 0; + chrpos = ppos; + while + ((evas_object_textblock_char_is_white(chr)) + && + (pos >= 0) && + (chr > 0)) + { + ppos = pos; + chr = evas_common_font_utf8_get_prev(text, &pos); + } + chr = evas_common_font_utf8_get_next(text, &ppos); + if (ppos < 0) ppos = 0; + nchrpos = ppos; } - chr = evas_common_font_utf8_get_next(text, &ppos); - if (ppos < 0) ppos = 0; - nchrpos = ppos; } } } + just_wrapped = 1; /* if the first char in the line can't fit!!! */ if ((chrpos == 0) && (lnode == line_start)) {