Enlightenment CVS committal

Author  : andrunko
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_entry.c 


Log Message:
Added Ecore_IMF_Evas.

Removed Evas dependency from Ecore_IMF, that was requested by Ewl developers
in order to be able to integrate Ecore_IMF on it.

Added Ecore_IMF_Evas, a library with helper functions to use Ecore_IMF together
with Evas.

Now everybody should be happy.

===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -3 -r1.46 -r1.47
--- etk_entry.c 21 Nov 2007 01:33:50 -0000      1.46
+++ etk_entry.c 21 Nov 2007 22:20:16 -0000      1.47
@@ -10,6 +10,7 @@
 
 #include <Ecore.h>
 #include <Ecore_Evas.h>
+#include <Ecore_IMF_Evas.h>
 
 #include "etk_editable.h"
 #include "etk_event.h"
@@ -557,16 +558,31 @@
    Etk_Entry *entry;
    Etk_Widget *internal_entry;
    Evas *evas;
+   const char *ctx_id;
+   const Ecore_IMF_Context_Info *ctx_info;
 
    if (!(internal_entry = ETK_WIDGET(object)) || !(evas = 
etk_widget_toplevel_evas_get(internal_entry)))
       return ETK_TRUE;
    if (!(entry = ETK_ENTRY(etk_object_data_get(object, "_Etk_Entry::Entry"))))
       return ETK_TRUE;
 
-   entry->imf_context = 
ecore_imf_context_add(ecore_imf_context_default_id_get());
+   ctx_id = ecore_imf_context_default_id_get();
+   ctx_info = ecore_imf_context_info_by_id_get(ctx_id);
+   if (!ctx_info->canvas_type ||
+       strcmp(ctx_info->canvas_type, "evas") == 0)
+       entry->imf_context = ecore_imf_context_add(ctx_id);
+   else
+   {
+       ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas");
+       if (ctx_id)
+           entry->imf_context = ecore_imf_context_add(ctx_id);
+   }
+
    if (entry->imf_context)
    {
-      ecore_imf_context_client_window_set(entry->imf_context, evas);
+      ecore_imf_context_client_window_set(entry->imf_context,
+            ecore_evas_window_get(ecore_evas_ecore_evas_get(evas)));
+      ecore_imf_context_client_canvas_set(entry->imf_context, evas);
       ecore_imf_context_retrieve_surrounding_callback_set(entry->imf_context,
             _etk_entry_imf_retrieve_surrounding_cb, entry);
       ecore_event_handler_add(ECORE_IMF_EVENT_COMMIT,
@@ -815,9 +831,16 @@
    if (!(entry = ETK_ENTRY(data)))
       return;
 
-   if (entry->imf_context &&
-       ecore_imf_context_filter_event(entry->imf_context, 
EVAS_CALLBACK_MOUSE_IN, event_info))
-      return;
+   if (entry->imf_context)
+   {
+      Ecore_IMF_Event_Mouse_In ev;
+
+      ecore_imf_evas_event_mouse_in_wrap(event_info, &ev);
+      if (ecore_imf_context_filter_event(entry->imf_context,
+                                         ECORE_IMF_EVENT_MOUSE_IN,
+                                         (Ecore_IMF_Event *) &ev))
+         return;
+   }
 
    if (!entry->pointer_set)
    {
@@ -834,9 +857,16 @@
    if (!(entry = ETK_ENTRY(data)))
       return;
 
-   if (entry->imf_context &&
-       ecore_imf_context_filter_event(entry->imf_context, 
EVAS_CALLBACK_MOUSE_OUT, event_info))
-      return;
+   if (entry->imf_context)
+   {
+      Ecore_IMF_Event_Mouse_Out ev;
+
+      ecore_imf_evas_event_mouse_out_wrap(event_info, &ev);
+      if (ecore_imf_context_filter_event(entry->imf_context,
+                                         ECORE_IMF_EVENT_MOUSE_OUT,
+                                         (Ecore_IMF_Event *) &ev))
+         return;
+   }
 
    if (entry->pointer_set)
    {
@@ -856,9 +886,16 @@
    if (!(entry = ETK_ENTRY(data)))
       return;
 
-   if (entry->imf_context &&
-       ecore_imf_context_filter_event(entry->imf_context, 
EVAS_CALLBACK_MOUSE_DOWN, event_info))
-      return;
+   if (entry->imf_context)
+   {
+      Ecore_IMF_Event_Mouse_Down ev;
+
+      ecore_imf_evas_event_mouse_down_wrap(event_info, &ev);
+      if (ecore_imf_context_filter_event(entry->imf_context,
+                                         ECORE_IMF_EVENT_MOUSE_DOWN,
+                                         (Ecore_IMF_Event *) &ev))
+         return;
+   }
 
    etk_event_mouse_down_wrap(ETK_WIDGET(entry), event_info, &event);
    evas_object_geometry_get(entry->editable_object, &ox, &oy, NULL, NULL);
@@ -901,9 +938,16 @@
    if (!(entry = ETK_ENTRY(data)))
       return;
 
-   if (entry->imf_context &&
-       ecore_imf_context_filter_event(entry->imf_context, 
EVAS_CALLBACK_MOUSE_UP, event_info))
-      return;
+   if (entry->imf_context)
+   {
+      Ecore_IMF_Event_Mouse_Up ev;
+
+      ecore_imf_evas_event_mouse_up_wrap(event_info, &ev);
+      if (ecore_imf_context_filter_event(entry->imf_context,
+                                         ECORE_IMF_EVENT_MOUSE_UP,
+                                         (Ecore_IMF_Event *) &ev))
+         return;
+   }
 
    etk_event_mouse_up_wrap(ETK_WIDGET(entry), event_info, &event);
    if (event.button == 1)
@@ -924,9 +968,16 @@
    if (!(entry = ETK_ENTRY(data)))
       return;
 
-   if (entry->imf_context &&
-       ecore_imf_context_filter_event(entry->imf_context, 
EVAS_CALLBACK_MOUSE_MOVE, event_info))
-      return;
+   if (entry->imf_context)
+   {
+      Ecore_IMF_Event_Mouse_Move ev;
+
+      ecore_imf_evas_event_mouse_move_wrap(event_info, &ev);
+      if (ecore_imf_context_filter_event(entry->imf_context,
+                                         ECORE_IMF_EVENT_MOUSE_MOVE,
+                                         (Ecore_IMF_Event *) &ev))
+         return;
+   }
 
    if (entry->selection_dragging)
    {



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
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