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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs