From 8a07b7e3a98f8c6aef6de2ee32636a936ebd4843 Mon Sep 17 00:00:00 2001 From: tasn Date: Thu, 19 Jan 2012 07:52:37 +0000 Subject: [PATCH] Evas textblock: Indentation adjustment for the previous commit. (I wanted the actual changes to be clear for review, so I split the commit to two). git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@67321 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/canvas/evas_object_textblock.c | 174 ++++++++++++++++----------------- 1 file changed, 86 insertions(+), 88 deletions(-) diff --git a/src/lib/canvas/evas_object_textblock.c b/src/lib/canvas/evas_object_textblock.c index 50e4cd5..29a996f 100644 --- a/src/lib/canvas/evas_object_textblock.c +++ b/src/lib/canvas/evas_object_textblock.c @@ -3715,115 +3715,113 @@ _layout_par(Ctxt *c) else if ((it->format->wrap_word || it->format->wrap_char || it->format->wrap_mixed) && it->text_node) { - { - size_t line_start; - size_t it_len; + size_t line_start; + size_t it_len; - it_len = (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) ? - 1 : _ITEM_TEXT(it)->text_props.text_len; + it_len = (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) ? + 1 : _ITEM_TEXT(it)->text_props.text_len; #ifdef HAVE_LINEBREAK - /* If we haven't calculated the linebreaks yet, - * do */ - if (!line_breaks) + /* If we haven't calculated the linebreaks yet, + * do */ + if (!line_breaks) + { + /* Only relevant in those cases */ + if (it->format->wrap_word || it->format->wrap_mixed) { - /* Only relevant in those cases */ - if (it->format->wrap_word || it->format->wrap_mixed) - { - const char *lang; - lang = (it->format->font.fdesc) ? - it->format->font.fdesc->lang : ""; - size_t len = - eina_ustrbuf_length_get( - it->text_node->unicode); - line_breaks = malloc(len); - set_linebreaks_utf32((const utf32_t *) - eina_ustrbuf_string_get( - it->text_node->unicode), - len, lang, line_breaks); - } + const char *lang; + lang = (it->format->font.fdesc) ? + it->format->font.fdesc->lang : ""; + size_t len = + eina_ustrbuf_length_get( + it->text_node->unicode); + line_breaks = malloc(len); + set_linebreaks_utf32((const utf32_t *) + eina_ustrbuf_string_get( + it->text_node->unicode), + len, lang, line_breaks); } + } #endif - if (c->ln->items) - line_start = c->ln->items->text_pos; - else - line_start = it->text_pos; + if (c->ln->items) + line_start = c->ln->items->text_pos; + else + line_start = it->text_pos; - adv_line = 1; - /* If we don't already have a wrap point from before */ - if (wrap < 0) - { - if (it->format->wrap_word) - wrap = _layout_get_wordwrap(c, it->format, it, - line_start, line_breaks); - else if (it->format->wrap_char) - wrap = _layout_get_charwrap(c, it->format, it, - line_start, line_breaks); - else if (it->format->wrap_mixed) - wrap = _layout_get_mixedwrap(c, it->format, it, - line_start, line_breaks); - else - wrap = -1; - } + adv_line = 1; + /* If we don't already have a wrap point from before */ + if (wrap < 0) + { + if (it->format->wrap_word) + wrap = _layout_get_wordwrap(c, it->format, it, + line_start, line_breaks); + else if (it->format->wrap_char) + wrap = _layout_get_charwrap(c, it->format, it, + line_start, line_breaks); + else if (it->format->wrap_mixed) + wrap = _layout_get_mixedwrap(c, it->format, it, + line_start, line_breaks); + else + wrap = -1; + } - /* If it's before the item, rollback and apply. - if it's in the item, cut. - If it's after the item, delay the cut */ - if (wrap > 0) + /* If it's before the item, rollback and apply. + if it's in the item, cut. + If it's after the item, delay the cut */ + if (wrap > 0) + { + size_t uwrap = (size_t) wrap; + if (uwrap < it->text_pos) { - size_t uwrap = (size_t) wrap; - if (uwrap < it->text_pos) + /* Rollback latest additions, and cut that + item */ + i = eina_list_prev(i); + it = eina_list_data_get(i); + while (uwrap < it->text_pos) { - /* Rollback latest additions, and cut that - item */ - i = eina_list_prev(i); - it = eina_list_data_get(i); - while (uwrap < it->text_pos) - { - c->ln->items = _ITEM( - eina_inlist_remove( - EINA_INLIST_GET(c->ln->items), - EINA_INLIST_GET(it))); - i = eina_list_prev(i); - it = eina_list_data_get(i); - } - c->x = it->x; c->ln->items = _ITEM( eina_inlist_remove( EINA_INLIST_GET(c->ln->items), EINA_INLIST_GET(it))); - continue; + i = eina_list_prev(i); + it = eina_list_data_get(i); } - /* If it points to the end, it means the previous - * char is a whitespace we should remove, so this - * is a wanted cutting point. */ - else if (uwrap > it->text_pos + it_len) - wrap = -1; /* Delay the cut in a smart way - i.e use the item_pos as the line_start, because - there's already no cut before*/ - else - wrap -= it->text_pos; /* Cut here */ + c->x = it->x; + c->ln->items = _ITEM( + eina_inlist_remove( + EINA_INLIST_GET(c->ln->items), + EINA_INLIST_GET(it))); + continue; } + /* If it points to the end, it means the previous + * char is a whitespace we should remove, so this + * is a wanted cutting point. */ + else if (uwrap > it->text_pos + it_len) + wrap = -1; /* Delay the cut in a smart way + i.e use the item_pos as the line_start, because + there's already no cut before*/ + else + wrap -= it->text_pos; /* Cut here */ + } - if (wrap > 0) - { - if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) - { - _layout_item_text_split_strip_white(c, - _ITEM_TEXT(it), i, wrap); - } - } - else if (wrap == 0) + if (wrap > 0) + { + if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) { - /* Should wrap before the item */ - adv_line = 0; - redo_item = 1; - _layout_line_advance(c, it->format); + _layout_item_text_split_strip_white(c, + _ITEM_TEXT(it), i, wrap); } - /* Reset wrap */ - wrap = -1; } + else if (wrap == 0) + { + /* Should wrap before the item */ + adv_line = 0; + redo_item = 1; + _layout_line_advance(c, it->format); + } + /* Reset wrap */ + wrap = -1; } } -- 2.7.4