scim-immodule: fix bug candidate window covers the preedit string when preedit string appears in 2 line.

SVN revision: 69664
This commit is contained in:
Jihoon Kim 2012-03-27 09:05:00 +00:00
parent fbe88302dc
commit 48a05444ec
2 changed files with 16 additions and 7 deletions

View File

@ -600,3 +600,8 @@
* Implement popup windows
* Implement ecore_wl_window_transparent_set function
* Implement function to allow setting Ecore_Wl_Window type.
2012-03-26 Jihoon Kim (jihoon)
* scim-immodule: fix bug candidate window covers the preedit string when preedit string appears in 2 line.

View File

@ -1014,16 +1014,13 @@ isf_imf_context_cursor_location_set(Ecore_IMF_Context *ctx, int cx, int cy, int
EcoreIMFContextISF *context_scim = (EcoreIMFContextISF *)ecore_imf_context_data_get(ctx);
Ecore_Evas *ee;
int canvas_x, canvas_y;
int new_cursor_x, new_cursor_y;
if (cw == 0 && ch == 0)
return;
if (context_scim && context_scim->impl && context_scim == _focused_ic)
{
// Don't update spot location while updating preedit string.
if (context_scim->impl->preedit_updating)
return;
if (context_scim->impl->client_canvas)
{
ee = ecore_evas_ecore_evas_get(context_scim->impl->client_canvas);
@ -1039,10 +1036,17 @@ isf_imf_context_cursor_location_set(Ecore_IMF_Context *ctx, int cx, int cy, int
return;
}
if (context_scim->impl->cursor_x != canvas_x + cx || context_scim->impl->cursor_y != canvas_y + cy + ch)
new_cursor_x = canvas_x + cx;
new_cursor_y = canvas_y + cy + ch;
// Don't update spot location while updating preedit string.
if (context_scim->impl->preedit_updating && (context_scim->impl->cursor_y == new_cursor_y))
return;
if (context_scim->impl->cursor_x != new_cursor_x || context_scim->impl->cursor_y != new_cursor_y)
{
context_scim->impl->cursor_x = canvas_x + cx;
context_scim->impl->cursor_y = canvas_y + cy + ch;
context_scim->impl->cursor_x = new_cursor_x;
context_scim->impl->cursor_y = new_cursor_y;
_panel_client.prepare(context_scim->id);
panel_req_update_spot_location(context_scim);
_panel_client.send();