From 1a5fc2da413aa03ff282c0556070d37a3af38eac Mon Sep 17 00:00:00 2001 From: raster Date: Mon, 21 Feb 2011 06:22:37 +0000 Subject: [PATCH] From: Jihoon Kim Subject: [E-devel] [PATCH] ecore_imf_context_canvas_get, ecore_imf_context_window_get This patch includes the code to add ecore_imf_context_canvas_get and ecore_imf_context_window_get. These APIs are coupled with the ecore_imf_context_canvas_set and ecore_imf_context_window_set. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@57203 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore_imf/Ecore_IMF.h | 2 ++ src/lib/ecore_imf/ecore_imf_context.c | 44 +++++++++++++++++++++++++++++++++++ src/lib/ecore_imf/ecore_imf_private.h | 2 ++ 3 files changed, 48 insertions(+) diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index ff363bf..e67e5af 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -302,7 +302,9 @@ EAPI Ecore_IMF_Context *ecore_imf_context_add(const char *id); EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_get(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_del(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_client_window_set(Ecore_IMF_Context *ctx, void *window); +EAPI void *ecore_imf_context_client_window_get(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_client_canvas_set(Ecore_IMF_Context *ctx, void *canvas); +EAPI void *ecore_imf_context_client_canvas_get(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_show(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_hide(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_preedit_string_get(Ecore_IMF_Context *ctx, char **str, int *cursor_pos); diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c index 7d6d2b1..6eb5a42 100644 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@ -242,6 +242,28 @@ ecore_imf_context_client_window_set(Ecore_IMF_Context *ctx, void *window) return; } if (ctx->klass->client_window_set) ctx->klass->client_window_set(ctx, window); + ctx->window = window; +} + +/** + * Get the client window of the Input Method Context + * + * See @ref ecore_imf_context_client_window_set for more details. + * + * @param ctx An #Ecore_IMF_Context. + * @return Return the client window. + * @ingroup Ecore_IMF_Context_Group + */ +EAPI void * +ecore_imf_context_client_window_get(Ecore_IMF_Context *ctx) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_client_window_get"); + return NULL; + } + return ctx->window; } /** @@ -267,6 +289,28 @@ ecore_imf_context_client_canvas_set(Ecore_IMF_Context *ctx, void *canvas) return; } if (ctx->klass->client_canvas_set) ctx->klass->client_canvas_set(ctx, canvas); + ctx->client_canvas = canvas; +} + +/** + * Get the client canvas of the Input Method Context. + * + * See @ref ecore_imf_context_client_canvas_set for more details. + * + * @param ctx An #Ecore_IMF_Context. + * @return Return the client canvas. + * @ingroup Ecore_IMF_Context_Group + */ +EAPI void * +ecore_imf_context_client_canvas_get(Ecore_IMF_Context *ctx) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_client_canvas_get"); + return NULL; + } + return ctx->client_canvas; } /** diff --git a/src/lib/ecore_imf/ecore_imf_private.h b/src/lib/ecore_imf/ecore_imf_private.h index 0d31618..3137272 100644 --- a/src/lib/ecore_imf/ecore_imf_private.h +++ b/src/lib/ecore_imf/ecore_imf_private.h @@ -43,6 +43,8 @@ struct _Ecore_IMF_Context const Ecore_IMF_Context_Class *klass; void *data; int input_mode; + void *window; + void *client_canvas; Eina_Bool (*retrieve_surrounding_func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos); void *retrieve_surrounding_data; }; -- 2.7.4