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

Reply via email to