From 6e66ed5a65a7cbdf20a2f981ca96a2719460c74d Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 14 Mar 2010 12:24:54 +0000 Subject: [PATCH] more bug -- SVN revision: 47202 --- legacy/edje/src/lib/edje_entry.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index ede60845cf..9e4ced4d39 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -1202,6 +1202,9 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v { if (multiline) { + if (en->have_selection) + _range_del(en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); evas_textblock_cursor_format_prepend(en->cursor, "\n"); _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); @@ -1218,8 +1221,8 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v { if (en->have_selection) _range_del(en->cursor, rp->object, en); - evas_textblock_cursor_text_prepend(en->cursor, ev->string); _sel_clear(en->cursor, rp->object, en); + evas_textblock_cursor_text_prepend(en->cursor, ev->string); _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); _edje_emit(ed, "entry,changed", rp->part->name); @@ -1323,11 +1326,20 @@ _edje_part_mouse_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS _curs_end(en->cursor, rp->object, en); else { - evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); - if (en->cx <= lx) - _curs_lin_start(en->cursor, rp->object, en); + int lnum; + + lnum = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (lnum < 0) + { + _curs_lin_start(en->cursor, rp->object, en); + } else - _curs_lin_end(en->cursor, rp->object, en); + { + if (en->cx <= lx) + _curs_lin_start(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); + } } line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); }