From bb20b8067e0e25301b101503bd864eefec0c9166 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Wed, 3 Aug 2011 08:56:59 +0000 Subject: [PATCH] Edje entry: Fixed changed/changed,user with backspace. It used to send the signals even when we didn't change anything (i.e tried to delete at the start of the entry). Now it's ok. SVN revision: 62044 --- legacy/edje/src/lib/edje_entry.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index c5f0ac68a7..ce37709b0d 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -989,11 +989,16 @@ _range_del(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o __UNUSED__, Entry evas_textblock_cursor_range_delete(en->sel_start, en->sel_end); } -static void +/* Return true if changed something */ +static Eina_Bool _backspace(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, Entry *en __UNUSED__) { if (evas_textblock_cursor_char_prev(c)) - evas_textblock_cursor_char_delete(c); + { + evas_textblock_cursor_char_delete(c); + return EINA_TRUE; + } + return EINA_FALSE; } static void @@ -1155,14 +1160,20 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v else { if (en->have_selection) - _range_del(en->cursor, rp->object, en); + { + _range_del(en->cursor, rp->object, en); + } else - _backspace(en->cursor, rp->object, en); + { + if (_backspace(en->cursor, rp->object, en)) + { + _edje_emit(ed, "entry,changed", rp->part->name); + _edje_emit(ed, "entry,changed,user", rp->part->name); + } + } } _sel_clear(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); - _edje_emit(ed, "entry,changed", rp->part->name); - _edje_emit(ed, "entry,changed,user", rp->part->name); _edje_emit(ed, "entry,key,backspace", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; }