From: WooHyun Jung Date: Mon, 21 Feb 2011 05:53:23 +0000 (+0000) Subject: From: WooHyun Jung X-Git-Tag: submit/2.0alpha-wayland/20121127.221958~879 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8fd8f368384617f9e3c17df066e35a3f69e9344c;p=profile%2Fivi%2Fedje.git From: WooHyun Jung Subject: RE: [E-devel] One bug in _edje_key_down_cb func (in edje_entry.c) I found one bug in _edje_key_down_cb func (in edje_entry.c) When I input "Backspace" in an entry object, _signal_cursor_chagned_func(in elm_entry.c) is not called. This is because the following code in _edje_key_down_cb func (in edje_entry.c) is not called. if ((evas_textblock_cursor_compare(tc, en->cursor)) && (!cursor_changed)) _edje_emit(ed, "cursor,changed", rp->part->name); Why not called ? Because ~ evas_textblock_cursor_compare(tc, en->cursor) returns 0. (i.e. old cursor and current cursor have the same position information) I think old cursor should keep its position without any updating. But in evas_textblock_cursor_char_delete() func, called by _backsapce func (in edje_entry.c) - old cursor's postion is updated as the current position. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/edje@57199 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/edje_entry.c b/src/lib/edje_entry.c index 08c1b87..c75a738 100644 --- a/src/lib/edje_entry.c +++ b/src/lib/edje_entry.c @@ -1016,7 +1016,7 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v Eina_Bool control, alt, shift; Eina_Bool multiline; Eina_Bool cursor_changed; - Evas_Textblock_Cursor *tc; + int old_cur_pos; if (!rp) return; en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || @@ -1036,8 +1036,7 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v } #endif - tc = evas_object_textblock_cursor_new(rp->object); - evas_textblock_cursor_copy(en->cursor, tc); + old_cur_pos = evas_textblock_cursor_pos_get(en->cursor); control = evas_key_modifier_is_set(ev->modifiers, "Control"); alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); @@ -1343,9 +1342,8 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } } - if ((evas_textblock_cursor_compare(tc, en->cursor)) && (!cursor_changed)) + if ((old_cur_pos != evas_textblock_cursor_pos_get(en->cursor)) && (!cursor_changed)) _edje_emit(ed, "cursor,changed", rp->part->name); - evas_textblock_cursor_free(tc); #ifdef HAVE_ECORE_IMF if (en->imf_context)