diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2014-05-15 17:43:00 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2014-05-15 17:43:00 +0900 |
commit | c3f0a0c59d9d73ce4861ed771c5ded1eadab4f50 (patch) | |
tree | 600b18dff11f9a9e7e0c42f6ee6b9b15f350c0a3 | |
parent | 7bbdb68811b2f760b9daab7576057c116277ff51 (diff) | |
download | efl-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.c | 36 |
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); |