jihoon pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=316cfd49aebcd49e2bd6f499664ca8eef750a8d6

commit 316cfd49aebcd49e2bd6f499664ca8eef750a8d6
Author: Jihoon Kim <[email protected]>
Date:   Thu Oct 2 10:09:12 2014 +0900

    ecore_imf/ibus: fix candidate word window position issue
    
    In case application window locates in top left position,
    The candidate word window provided by ibus could overlap the position of 
entry widget when typing Chinese and Japanese.
---
 src/modules/ecore_imf/ibus/ibus_imcontext.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/modules/ecore_imf/ibus/ibus_imcontext.c 
b/src/modules/ecore_imf/ibus/ibus_imcontext.c
index d725017..1154676 100644
--- a/src/modules/ecore_imf/ibus/ibus_imcontext.c
+++ b/src/modules/ecore_imf/ibus/ibus_imcontext.c
@@ -614,29 +614,29 @@ 
_ecore_imf_context_ibus_cursor_location_set(Ecore_IMF_Context *ctx)
    IBusIMContext *ibusimcontext = (IBusIMContext 
*)ecore_imf_context_data_get(ctx);
    Ecore_Evas *ee;
    int canvas_x, canvas_y;
+   Ecore_X_Window client_window = 0;
 
    EINA_SAFETY_ON_NULL_RETURN(ibusimcontext);
 
    if (ibusimcontext->ibuscontext == NULL)
      return;
 
-   if (ibusimcontext->client_canvas)
-     {
-        ee = ecore_evas_ecore_evas_get(ibusimcontext->client_canvas);
-        if (!ee) return;
-
-        ecore_evas_geometry_get(ee, &canvas_x, &canvas_y, NULL, NULL);
-     }
+   if (ibusimcontext->client_window)
+     client_window = ibusimcontext->client_window;
    else
      {
-        if (ibusimcontext->client_window)
-          
_ecore_imf_ibus_window_to_screen_geometry_get(ibusimcontext->client_window,
-                                                        &canvas_x,
-                                                        &canvas_y);
-        else
-          return;
+        if (ibusimcontext->client_canvas)
+          {
+             ee = ecore_evas_ecore_evas_get(ibusimcontext->client_canvas);
+             if (ee)
+               client_window = (Ecore_X_Window)ecore_evas_window_get(ee);
+          }
      }
 
+   _ecore_imf_ibus_window_to_screen_geometry_get(client_window,
+                                                 &canvas_x,
+                                                 &canvas_y);
+
    ibus_input_context_set_cursor_location(ibusimcontext->ibuscontext,
                                           ibusimcontext->cursor_x + canvas_x,
                                           ibusimcontext->cursor_y + canvas_y,

-- 


Reply via email to