diff options
author | Jihoon Kim <jihoon48.kim@samsung.com> | 2014-10-02 10:09:12 +0900 |
---|---|---|
committer | Jihoon Kim <jihoon48.kim@samsung.com> | 2014-10-06 08:30:17 +0900 |
commit | 139d01007975706badaa662c9d66d5653d1c7277 (patch) | |
tree | 519794a4d23ad8a2db6b6b0ee289a09f7519daf7 | |
parent | 1ca436f48ad9e874a7d4581ac3bf8448d73c9d8b (diff) | |
download | efl-139d01007975706badaa662c9d66d5653d1c7277.tar.gz |
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.
-rw-r--r-- | src/modules/ecore_imf/ibus/ibus_imcontext.c | 24 |
1 files 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 c7cedeb66a..abd83f589a 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, |