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
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) ||
}
#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");
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)