jihoon pushed a commit to branch efl-1.11. http://git.enlightenment.org/core/efl.git/commit/?id=139d01007975706badaa662c9d66d5653d1c7277
commit 139d01007975706badaa662c9d66d5653d1c7277 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 | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/modules/ecore_imf/ibus/ibus_imcontext.c b/src/modules/ecore_imf/ibus/ibus_imcontext.c index c7cedeb..abd83f5 100644 --- a/src/modules/ecore_imf/ibus/ibus_imcontext.c +++ b/src/modules/ecore_imf/ibus/ibus_imcontext.c @@ -573,27 +573,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, --
