char wrap - click to go to end works.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 17 Apr 2010 15:50:27 +0000 (15:50 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 17 Apr 2010 15:50:27 +0000 (15:50 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@48074 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/edje_entry.c

index b6a5df6..4176cb4 100644 (file)
@@ -304,23 +304,68 @@ _curs_line_last_get(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *
 }
 
 static void
+_curs_lin_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
+{
+   evas_textblock_cursor_line_first(c);
+   _curs_update_from_curs(c, o, en);
+}
+
+static void
+_curs_lin_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
+{
+   evas_textblock_cursor_line_last(c);
+//   if (!evas_textblock_cursor_node_format_get(c))
+//     _curs_next(c, o, en);
+   _curs_update_from_curs(c, o, en);
+}
+
+static void
+_curs_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
+{
+   evas_textblock_cursor_line_set(c, 0);
+   evas_textblock_cursor_line_first(c);
+   _curs_update_from_curs(c, o, en);
+}
+
+static void
+_curs_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
+{
+   evas_textblock_cursor_node_last(c);
+   _curs_lin_end(c, o, en);
+//   evas_textblock_cursor_line_set(c, _curs_line_last_get(c, o, en));
+//   _curs_lin_end(c, o, en);
+   _curs_update_from_curs(c, o, en);
+}
+
+static void
 _curs_jump_line(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en, int ln)
 {
    Evas_Coord lx, ly, lw, lh;
+   int last = _curs_line_last_get(c, o, en);
 
    if (ln < 0) ln = 0;
    else
      {
-       int last = _curs_line_last_get(c, o, en);
        if (ln > last) ln = last;
      }
    if (!evas_object_textblock_line_number_geometry_get(o, ln, &lx, &ly, &lw, &lh))
      return;
    if (evas_textblock_cursor_char_coord_set(c, en->cx, ly + (lh / 2)))
      return;
-   evas_textblock_cursor_line_coord_set(c, ly + (lh / 2));
-   if (en->cx < (lx + (lw / 2))) evas_textblock_cursor_line_first(c);
-   else evas_textblock_cursor_line_last(c);
+   if (en->cx < (lx + (lw / 2)))
+     {
+//        evas_textblock_cursor_line_first(c);
+        if (ln == last) _curs_end(c, o, en);
+        _curs_lin_start(c, o, en);
+     }
+   else
+     {
+//        evas_textblock_cursor_line_last(c);
+        if (ln == last)
+          _curs_end(c, o, en);
+        else
+          _curs_lin_end(c, o, en);
+     }
 }
 
 static void
@@ -345,40 +390,6 @@ _curs_down(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
 }
 
 static void
-_curs_lin_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
-{
-   evas_textblock_cursor_line_first(c);
-   _curs_update_from_curs(c, o, en);
-}
-
-static void
-_curs_lin_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
-{
-   evas_textblock_cursor_line_last(c);
-//   if (!evas_textblock_cursor_node_format_get(c))
-//     _curs_next(c, o, en);
-   _curs_update_from_curs(c, o, en);
-}
-
-static void
-_curs_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
-{
-   evas_textblock_cursor_line_set(c, 0);
-   evas_textblock_cursor_line_first(c);
-   _curs_update_from_curs(c, o, en);
-}
-
-static void
-_curs_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
-{
-   evas_textblock_cursor_line_set(c, _curs_line_last_get(c, o, en));
-   _curs_lin_end(c, o, en);
-   _curs_update_from_curs(c, o, en);
-}
-
-
-
-static void
 _sel_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
 {
    if (en->sel_start) return;