fix word start/end logic to be consistent with other toolkits.
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 28 Mar 2013 09:51:18 +0000 (18:51 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 28 Mar 2013 09:51:18 +0000 (18:51 +0900)
ChangeLog
NEWS
src/lib/evas/canvas/evas_object_textblock.c

index 9750a2d..5b5cfb4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2013-03-28  Carsten Haitzler (The Rasterman)
+
+        * Change evas_textblock_cursor_word_start() and
+        evas_textblock_cursor_word_end() to walk extra whitespaces when
+        moving up and down words that tends to look more like other
+        toolkits (gtk, qt). the docs dont specifically say the rules
+        on word finding, so being consistent is better i believe and
+        so we can assume the prior behavior is a bug.
+
 2013-03-27  Cedric Bail
 
        * Eina: Add eina_log_timing.
diff --git a/NEWS b/NEWS
index cf5c8fe..f76e48b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -213,3 +213,4 @@ Fixes:
     * fix gles support to only use GL_UNPACK_ROW_LENGTH if extension exists
     * Fix magic failure in eina_value_array_count when array has not been allocated
     * Ecore_x: fix alpha set function not clear sync counter
+    * Fix evas word start/end find in textblock to be consistent with other toolkit logic on the matter
index 02bde45..2ecc56c 100644 (file)
@@ -7015,7 +7015,7 @@ evas_textblock_cursor_word_start(Evas_Textblock_Cursor *cur)
         set_wordbreaks_utf32((const utf32_t *) text, len, lang, breaks);
      }
 
-   i = cur->pos;
+   for (i = cur->pos; (BREAK_AFTER(i)) && (i >= 0); i--);
 
    for ( ; i > 0 ; i--)
      {
@@ -7050,7 +7050,7 @@ evas_textblock_cursor_word_end(Evas_Textblock_Cursor *cur)
         set_wordbreaks_utf32((const utf32_t *) text, len, lang, breaks);
      }
 
-   i = cur->pos;
+   for (i = cur->pos; (BREAK_AFTER(i)) && (text[i]); i++);
 
    for ( ; text[i] ; i++)
      {