Enlightenment CVS committal Author : andrunko Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_entry.c Log Message: Proper handle Ecore_IMF commit event. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_entry.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -3 -r1.54 -r1.55 --- e_entry.c 19 Jan 2008 01:00:37 -0000 1.54 +++ e_entry.c 15 May 2008 21:08:30 -0000 1.55 @@ -1357,14 +1357,32 @@ Evas_Object *entry; E_Entry_Smart_Data *sd; Ecore_IMF_Event_Commit *ev = event; + Evas_Object *editable; + int cursor_pos, selection_pos; + int start_pos, end_pos; + int selecting; + int changed = 0; if ((!(entry = data)) || (!(sd = evas_object_smart_data_get(entry)))) return 1; if (sd->imf_context != ev->ctx) - return 1; + return 1; + + editable = sd->editable_object; + cursor_pos = e_editable_cursor_pos_get(editable); + selection_pos = e_editable_selection_pos_get(editable); + start_pos = (cursor_pos <= selection_pos) ? cursor_pos : selection_pos; + end_pos = (cursor_pos >= selection_pos) ? cursor_pos : selection_pos; + selecting = (start_pos != end_pos); + + if (selecting) + changed |= e_editable_delete(editable, start_pos, end_pos); + changed |= e_editable_insert(editable, start_pos, ev->str); + + if (changed) + evas_object_smart_callback_call(entry, "changed", NULL); - e_entry_text_set(entry, ev->str); return 0; } @@ -1379,7 +1397,7 @@ sd = data; if (sd->imf_context != ev->ctx) - return 1; + return 1; editable = sd->editable_object; cursor_pos = e_editable_cursor_pos_get(editable); ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs