summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2014-05-15 17:43:00 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2014-05-15 17:43:00 +0900
commitc3f0a0c59d9d73ce4861ed771c5ded1eadab4f50 (patch)
tree600b18dff11f9a9e7e0c42f6ee6b9b15f350c0a3
parent7bbdb68811b2f760b9daab7576057c116277ff51 (diff)
downloadefl-c3f0a0c59d9d73ce4861ed771c5ded1eadab4f50.tar.gz
fix behavior of edje entry to match other toolkit entires
this fixes T1229 in the part about the cursor behavior when you press updown/left/right when a selection is there. @fix
-rw-r--r--src/lib/edje/edje_entry.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c
index f7bfa90612..ab823ce2d9 100644
--- a/src/lib/edje/edje_entry.c
+++ b/src/lib/edje/edje_entry.c
@@ -1388,7 +1388,14 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
_sel_start(en->cursor, rp->object, en);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
- else _sel_clear(ed, en->cursor, rp->object, en);
+ else
+ {
+ if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) < 0)
+ evas_textblock_cursor_copy(en->sel_start, en->cursor);
+ else
+ evas_textblock_cursor_copy(en->sel_end, en->cursor);
+ _sel_clear(ed, en->cursor, rp->object, en);
+ }
}
if (_curs_up(en->cursor, rp->object, en))
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
@@ -1417,7 +1424,14 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
_sel_start(en->cursor, rp->object, en);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
- else _sel_clear(ed, en->cursor, rp->object, en);
+ else
+ {
+ if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) < 0)
+ evas_textblock_cursor_copy(en->sel_end, en->cursor);
+ else
+ evas_textblock_cursor_copy(en->sel_start, en->cursor);
+ _sel_clear(ed, en->cursor, rp->object, en);
+ }
}
if (_curs_down(en->cursor, rp->object, en))
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
@@ -1444,7 +1458,14 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
_sel_start(en->cursor, rp->object, en);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
- else _sel_clear(ed, en->cursor, rp->object, en);
+ else
+ {
+ if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) < 0)
+ evas_textblock_cursor_copy(en->sel_start, en->cursor);
+ else
+ evas_textblock_cursor_copy(en->sel_end, en->cursor);
+ _sel_clear(ed, en->cursor, rp->object, en);
+ }
}
if (evas_textblock_cursor_char_prev(en->cursor))
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
@@ -1472,7 +1493,14 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
_sel_start(en->cursor, rp->object, en);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
- else _sel_clear(ed, en->cursor, rp->object, en);
+ else
+ {
+ if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) < 0)
+ evas_textblock_cursor_copy(en->sel_end, en->cursor);
+ else
+ evas_textblock_cursor_copy(en->sel_start, en->cursor);
+ _sel_clear(ed, en->cursor, rp->object, en);
+ }
}
/* If control is pressed, go to the end of the word */
if (control) evas_textblock_cursor_word_end(en->cursor);