From edec686e83c6700f69e89ac2e7d30c650091e976 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 7 Jul 2011 16:43:32 +0900 Subject: [PATCH] [ecore_imf] add ecore_imf_context_cursor_location_set API Change-Id: Ifc88d1bd74b26c86ae143edd20d70432b6e93299 --- src/lib/ecore_imf/Ecore_IMF.h | 4 ++-- src/lib/ecore_imf/ecore_imf_context.c | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index 50c608f..043af1f 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -412,8 +412,6 @@ struct _Ecore_IMF_Context_Class void (*use_preedit_set) (Ecore_IMF_Context *ctx, Eina_Bool use_preedit); void (*input_mode_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode); Eina_Bool (*filter_event) (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event); - - /* Input Panel Control APIs */ void (*control_panel_show) (Ecore_IMF_Context *ctx); void (*control_panel_hide) (Ecore_IMF_Context *ctx); @@ -453,6 +451,7 @@ struct _Ecore_IMF_Context_Class void (*preedit_string_with_attributes_get) (Ecore_IMF_Context *ctx, char **str, Eina_List **attrs, int *cursor_pos); void (*prediction_allow_set)(Ecore_IMF_Context *ctx, Eina_Bool prediction); void (*autocapital_type_set)(Ecore_IMF_Context *ctx, Ecore_IMF_Autocapital_Type autocapital_type); + void (*cursor_location_set) (Ecore_IMF_Context *ctx, int x, int y, int w, int h); }; struct _Ecore_IMF_Context_Info @@ -490,6 +489,7 @@ EAPI void ecore_imf_context_focus_in(Ecore_IMF_Context EAPI void ecore_imf_context_focus_out(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_reset(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos); +EAPI void ecore_imf_context_cursor_location_set(Ecore_IMF_Context *ctx, int x, int y, int w, int h); EAPI void ecore_imf_context_use_preedit_set(Ecore_IMF_Context *ctx, Eina_Bool use_preedit); EAPI void ecore_imf_context_retrieve_surrounding_callback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos), const void *data); EAPI void ecore_imf_context_input_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode); diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c index 0ccdf2c..524e0d9 100644 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@ -516,6 +516,29 @@ ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos) } /** + * Notify the Input Method Context that a change in the cursor + * location has been made. The location is relative to the canvas. + * + * @param ctx An #Ecore_IMF_Context. + * @param x cursor x position. + * @param x cursor y position. + * @param w cursor width. + * @param h cursor height. + * @ingroup Ecore_IMF_Context_Group + */ +EAPI void +ecore_imf_context_cursor_location_set(Ecore_IMF_Context *ctx, int x, int y, int w, int h) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_cursor_location_set"); + return; + } + if (ctx->klass->cursor_location_set) ctx->klass->cursor_location_set(ctx, x, y, w, h); +} + +/** * Set whether the IM context should use the preedit string * to display feedback. If @use_preedit is EINA_FALSE (default * is EINA_TRUE), then the IM context may use some other method to display -- 2.7.4