From 1557b40d76bc5b73f012f46f046e5b7ab2b74783 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Sun, 26 Dec 2010 12:01:21 +0000 Subject: [PATCH] Evas textblock: Fixed evas_textblock_cursor_pos_set's handling with out of bound positions. SVN revision: 55757 --- .../src/lib/canvas/evas_object_textblock.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_object_textblock.c b/legacy/evas/src/lib/canvas/evas_object_textblock.c index 694fcd127b..7865a33ecc 100644 --- a/legacy/evas/src/lib/canvas/evas_object_textblock.c +++ b/legacy/evas/src/lib/canvas/evas_object_textblock.c @@ -5345,14 +5345,27 @@ evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int _pos) } n = o->text_nodes; - while (pos >= eina_ustrbuf_length_get(n->unicode)) + while (n && (pos >= eina_ustrbuf_length_get(n->unicode))) { pos -= eina_ustrbuf_length_get(n->unicode); n = _NODE_TEXT(EINA_INLIST_GET(n)->next); } - cur->node = n; - cur->pos = pos; + if (n) + { + cur->node = n; + cur->pos = pos; + } + else + { + Evas_Object_Textblock_Node_Text *last_n; + + last_n = _NODE_TEXT(EINA_INLIST_GET(o->text_nodes)->last); + cur->node = last_n; + cur->pos = 0; + + evas_textblock_cursor_paragraph_char_last(cur); + } }