From: Mike McCormack Date: Fri, 8 Jul 2011 08:09:03 +0000 (+0900) Subject: Merge branch 'upstream' X-Git-Tag: 2.0_alpha~189 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=542ec29297b6152bcbec0f327ae9025a3c986ed0;p=framework%2Fuifw%2Fecore.git Merge branch 'upstream' --- 542ec29297b6152bcbec0f327ae9025a3c986ed0 diff --cc src/lib/ecore_imf/ecore_imf_context.c index 524e0d9,e95523e..914d310 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@@ -1203,721 -1234,3 +1253,670 @@@ ecore_imf_context_input_panel_enabled_g return ctx->input_panel_enabled; } +/** + * Get ISE Language of given ISE. -- Not supported for now -- + * @ingroup Ecore_IMF_Context_IMControl_Group + */ +EAPI int +ecore_imf_context_ise_get_ise_language (Ecore_IMF_Context *ctx, const char* ise_name, char ***langlist) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_ise_get_ise_language"); + return -1; + } + + if (!ise_name) return -1; + + if (ctx->klass->ise_get_ise_language) + return ctx->klass->ise_get_ise_language(ctx, ise_name, langlist); + else + return -1; +} + +/** + * Set keyboard language. + * + * @param ctx An #Ecore_IMF_Context. + * @param lang see Ecore_IMF_Input_Panel_Lang + * @ingroup Ecore_IMF_Context_IMControl_Group + * THIS API IS NOT SUPPORTED NOW + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_keyboard_language_set (Ecore_IMF_Context *ctx, Ecore_IMF_Keyboard_Lang lang) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_keyboard_language_set"); + return; + } +// if (ctx->klass->ise_set_language) ctx->klass->ise_set_language(ctx, lang); +} + +/** + * Get keyboard language. + * + * @param ctx An #Ecore_IMF_Context. + * @return Ecore_IMF_Input_Panel_Lang + * @ingroup Ecore_IMF_Context_IMControl_Group + * THIS API IS NOT SUPPORTED NOW + * @since 1.1.0 + */ +EAPI Ecore_IMF_Keyboard_Lang +ecore_imf_context_keyboard_language_get (Ecore_IMF_Context *ctx) +{ + Ecore_IMF_Keyboard_Lang lang = ECORE_IMF_KEYBOARD_LANG_NATIVE; + + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_keyboard_language_get"); + return lang; + } +/* + if (ctx->klass->input_panel_language_get) + lang = ctx->klass->input_panel_language_get(ctx); +*/ + return lang; +} + +/** + * Set ISF Language. -- Not supported for now -- + * @ingroup Ecore_IMF_Context_IMControl_Group + */ +EAPI void +ecore_imf_context_ise_set_isf_language (Ecore_IMF_Context *ctx, const char* lang) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_ise_set_isf_language"); + return; + } + + if (!lang) return; + + if (ctx->klass->ise_set_isf_language) + ctx->klass->ise_set_isf_language(ctx, lang); +} + +/** + * Set specific data to pass to input panel. + * this API is used by applications to deliver specific data to input panel. + * the data format MUST be negotiated by both application and input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @param data The specific data to be set to the input panel. + * @param len the length of data + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_imdata_set (Ecore_IMF_Context *ctx, const char *data, int len) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_imdata_set"); + return; + } + + if (!data || len <=0) return; + + if (ctx->klass->input_panel_imdata_set) + ctx->klass->input_panel_imdata_set(ctx, data, len); +} + +/** + * Get specific data of the current active input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @param data The specific data to be got from the input panel + * @param len The length of data + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_imdata_get (Ecore_IMF_Context *ctx, char *data, int *len) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_get_imdata"); + return; + } + + if (!data) return; + + if (ctx->klass->input_panel_imdata_get) + ctx->klass->input_panel_imdata_get(ctx, data, len); +} + +/** + * Set whether animation effect of the input panel is shown or not. + * + * @param ctx An #Ecore_IMF_Context. + * @param use_effect whether animation effect is shown or not + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_use_effect_set (Ecore_IMF_Context *ctx, Eina_Bool use_effect) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_use_effect_set"); + return; + } + + if (ctx->klass->input_panel_use_effect_set) + ctx->klass->input_panel_use_effect_set(ctx, use_effect); + + ctx->use_effect = use_effect; +} + +/** + * Get whether input panel supports animation effect or not when it is shown or hidden. + * + * @param ctx An #Ecore_IMF_Context. + * @param use_effect whether animation effect is shown or not + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI Eina_Bool +ecore_imf_context_input_panel_use_effect_get (Ecore_IMF_Context *ctx) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_use_effect_get"); + return EINA_TRUE; + } + + return ctx->use_effect; +} + +/** + * Get position of current active input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @param x top-left x co-ordinate of rectangle; + * @param y top-left y co-ordinate of rectangle; + * @param w width of rectangle ; + * @param h height of rectangle; + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_geometry_get (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_input_panel_geometry_get"); + return; + } + + if (ctx->klass->input_panel_geometry_get) + ctx->klass->input_panel_geometry_get(ctx, x, y, w, h); +} + +/** + * Set the private key of input panel. + * Since the second parameter of this API requires a layout index, so before using this API + * application has to set a specific layout and that layout index should + * be passed in the 2nd argument of this API. + * + * @param ctx An #Ecore_IMF_Context. + * @param layout_index index of layout page to be set + * @param img_path the path of image file to be set + * @param key_index index of key to be set + * @param label text label to be appeared on private key + * @param value value of key, If NULL it will use original value of key + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_private_key_set (Ecore_IMF_Context *ctx, int layout_index, int key_index, const char *img_path, const char *label, int key_value, const char *key_string) +{ + Private_Key_Item *key_item; + Eina_List *l; + Eina_Bool exist = EINA_FALSE; + + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_private_key_set"); + return; + } + + if ((!label) && (!img_path)) return; + + EINA_LIST_FOREACH(ctx->private_key_list, l, key_item) + { + if (key_item && (key_item->layout_idx == layout_index) && + (key_item->key_idx == key_index)) + { + // if exist in the list + exist = EINA_TRUE; + if (label) + { + key_item->type = 0; + strcpy(key_item->data, label); + } + else + { + key_item->type = 1; + strcpy(key_item->data, img_path); + } + key_item->key_value = key_value; + strcpy(key_item->key_string, key_string); + } + } + + if (!exist) + { + key_item = calloc(1, sizeof(Private_Key_Item)); + if (!key_item) return; + + key_item->layout_idx = layout_index; + key_item->key_idx = key_index;; + if (label) + { + key_item->type = 0; + strcpy(key_item->data, label); + } + else + { + key_item->type = 1; + strcpy(key_item->data, img_path); + } + key_item->key_value = key_value; + + if (key_string) + strcpy(key_item->key_string, key_string); + + ctx->private_key_list = eina_list_append(ctx->private_key_list, key_item); + } + +// if (ctx->klass->input_panel_private_key_set) ctx->klass->input_panel_private_key_set(ctx, layout_index, key_index, img_path, label, value); +} + +/** + * Get the list of private key. + * + * @param ctx An #Ecore_IMF_Context. + * @return Return the list of private key + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI Eina_List * +ecore_imf_context_input_panel_private_key_list_get (Ecore_IMF_Context *ctx) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_private_key_list_get"); + return NULL; + } + + return ctx->private_key_list; +} + +/** + * Set the key to be disabled. + * Since the second parameter of this API requires a layout index, so before using this API application has to set a specific layout and that layout index + * should be passed in the 2nd argument of this API. + * + * @param ctx An #Ecore_IMF_Context. + * @param layout_index index of layout page to be set + * @param key_index index of key to be set + * @param disabled The state + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_key_disabled_set (Ecore_IMF_Context *ctx, int layout_index, int key_index, Eina_Bool disabled) +{ + Disable_Key_Item *key_item; + Eina_List *l; + Eina_Bool exist = EINA_FALSE; + + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_key_disabled_set"); + return; + } + + EINA_LIST_FOREACH(ctx->disabled_key_list, l, key_item) + { + if (key_item && (key_item->layout_idx == layout_index) && + (key_item->key_idx == key_index)) + { + key_item->disabled = disabled; + exist = EINA_TRUE; + } + } + + if (!exist) + { + key_item = calloc(1, sizeof(Disable_Key_Item)); + if (!key_item) return; + + key_item->layout_idx = layout_index; + key_item->key_idx = key_index;; + key_item->disabled = disabled; + + ctx->disabled_key_list = eina_list_append(ctx->disabled_key_list, key_item); + } + +// if (ctx->klass->input_panel_key_disabled_set) ctx->klass->input_panel_key_disabled_set(ctx, layout_index, key_index, disabled); +} + +/** + * Get the list of disabled keys. + * + * @param ctx An #Ecore_IMF_Context. + * @return Return the list of private key + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI Eina_List * +ecore_imf_context_input_panel_key_disabled_list_get (Ecore_IMF_Context *ctx) +{ + return ctx->disabled_key_list; +} + +/** - * Set the layout of input panel. - * - * @param ctx An #Ecore_IMF_Context. - * @param layout see #ECORE_IMF_INPUT_PANEL_LAYOUT - * @ingroup Ecore_IMF_Context_IMControl_Group - * @since 1.1.0 - */ - EAPI void - ecore_imf_context_input_panel_layout_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout) - { - if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) - { - ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, - "ecore_imf_context_input_panel_layout_set"); - return; - } - - if (ctx->klass->input_panel_layout_set) - ctx->klass->input_panel_layout_set(ctx, layout); - - ctx->input_panel_layout = layout; - } - - /** - * Get the layout of current active input panel. - * - * @param ctx An #Ecore_IMF_Context. - * @return layout see #Ecore_IMF_Input_Panel_Layout - * @ingroup Ecore_IMF_Context_IMControl_Group - * @since 1.1.0 - */ - EAPI Ecore_IMF_Input_Panel_Layout - ecore_imf_context_input_panel_layout_get (Ecore_IMF_Context *ctx) - { - if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) - { - ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, - "ecore_imf_context_input_panel_layout_get"); - return ECORE_IMF_INPUT_PANEL_LAYOUT_INVALID; - } - - if (ctx->klass->input_panel_layout_get) - { - // ctx->klass->input_panel_layout_get (ctx, &layout); - return ctx->input_panel_layout; - } - else - return ECORE_IMF_INPUT_PANEL_LAYOUT_INVALID; - } - - /** + * Restore all default properties of input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_reset (Ecore_IMF_Context *ctx) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_reset"); + return; + } + + if (ctx->klass->input_panel_reset) ctx->klass->input_panel_reset(ctx); +} + +/** + * Set the screen orientation of input panel + * To show the keypad in landscape mode application should first call this API with 2nd parameter as 90 or 270. + * After then only application should call @ref ecore_imf_context_input_panel_show. + * + * @param ctx An #Ecore_IMF_Context. + * @param orientation the orientation of input panel + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_orient_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Orient orientation) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_orient_set"); + return; + } + + if (ctx->klass->input_panel_orient_set) + ctx->klass->input_panel_orient_set(ctx, orientation*90); + + ctx->input_panel_orient = orientation; +} + +/** + * Get the screen orientation of input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @return The screen orientation of input panel + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI Ecore_IMF_Input_Panel_Orient +ecore_imf_context_input_panel_orient_get (Ecore_IMF_Context *ctx) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_orient_get"); + return ECORE_IMF_INPUT_PANEL_ORIENT_NONE; + } + + return ctx->input_panel_orient; +} + +/** + * Get name of current active input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @param name input panel name to be got + * @ingroup Ecore_IMF_Context_IMControl_Group + */ +EAPI void +ecore_imf_context_ise_get_active_isename (Ecore_IMF_Context *ctx, char* name) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_ise_get_active_isename"); + return; + } + + if (!name) return; + + if (ctx->klass->ise_get_active_isename) + ctx->klass->ise_get_active_isename(ctx, name); +} + +/** + * Choose the active input panel by its name. + * + * @param ctx An #Ecore_IMF_Context. + * @param name input panel name to be set + * @ingroup Ecore_IMF_Context_IMControl_Group + */ +EAPI void +ecore_imf_context_ise_set_active_ise_by_name (Ecore_IMF_Context *ctx, const char* name) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_ise_set_active_ise_by_name"); + return; + } + + if (!name) return; + + if (ctx->klass->ise_set_active_ise_by_name) + ctx->klass->ise_set_active_ise_by_name(ctx, name); +} + +/** + * Set input panel by its uuid. + * + * @param ctx An #Ecore_IMF_Context. + * @param uuid input panel uuid to be set + * @ingroup Ecore_IMF_Context_IMControl_Group + */ +EAPI void +ecore_imf_context_ise_set_active_ise_by_uuid (Ecore_IMF_Context *ctx, const char* uuid) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_ise_set_active_ise_by_uuid"); + return; + } + + if (!uuid) return; + + if (ctx->klass->ise_set_active_ise_by_uuid) + ctx->klass->ise_set_active_ise_by_uuid(ctx, uuid); +} + +/** + * Get list of input panels. + * + * @param ctx An #Ecore_IMF_Context. + * @param iselist pointer to the list to be got. + * @return int ise counter of iselist + * @ingroup Ecore_IMF_Context_IMControl_Group + */ +EAPI int +ecore_imf_context_ise_get_iselist (Ecore_IMF_Context *ctx, char*** iselist) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_ise_get_iselist"); + return -1; + } + + if (ctx->klass->ise_get_iselist) + return ctx->klass->ise_get_iselist(ctx, iselist); + else + return -1; +} + +/** + * Get state of current active input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @param The state of input panel. + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI Ecore_IMF_Input_Panel_State +ecore_imf_context_input_panel_state_get (Ecore_IMF_Context *ctx) +{ + Ecore_IMF_Input_Panel_State state = ECORE_IMF_INPUT_PANEL_STATE_INVALID; + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_state_get"); + return ECORE_IMF_INPUT_PANEL_STATE_INVALID; + } + + if (ctx->klass->input_panel_state_get) + state = ctx->klass->input_panel_state_get(ctx); + + return state; +} + +/** + * Register a callback function which will be called if there is change in input panel state,language,mode etc. + * In order to deregister the callback function + * Use @ref ecore_imf_context_input_panel_event_callback_del. + * + * @param ctx An #Ecore_IMF_Context + * @param type event type + * @param func the callback function + * @param data application-input panel specific data. + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_event_callback_add (Ecore_IMF_Context *ctx, + Ecore_IMF_Input_Panel_Event type, + void (*func) (void *data, Ecore_IMF_Context *ctx, int value), + const void *data) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_event_callback_add"); + return; + } + + if (ctx->klass->input_panel_event_callback_add) + { + ctx->klass->input_panel_event_callback_add(ctx, type, func, data); + } +} + +/** + * Unregister a callback function which will be called if there is change in input panel state, language, mode etc. + * + * @param ctx An #Ecore_IMF_Context. + * @param func the callback function + * @param data application-input panel specific data. + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_event_callback_del (Ecore_IMF_Context *ctx, + Ecore_IMF_Input_Panel_Event type, + void (*func) (void *data, Ecore_IMF_Context *ctx, int value)) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_event_callback_del"); + return; + } + + if (ctx->klass->input_panel_event_callback_del) + { + ctx->klass->input_panel_event_callback_del(ctx, type, func); + } +} + +/** + * Move the soft keyboard to the new position. + * + * @param ctx An #Ecore_IMF_Context. + * @param x X position to move the input panel to + * @param y Y position to move the input panel to + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_move (Ecore_IMF_Context *ctx, int x, int y) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_move"); + return; + } + + if (ctx->klass->input_panel_move) ctx->klass->input_panel_move(ctx, x, y); + ctx->input_panel_x = x; + ctx->input_panel_y = y; +} + +/** + * Set the caps mode of the input panel. + * + * @param ctx An #Ecore_IMF_Context. + * @param mode the caps mode + * @ingroup Ecore_IMF_Context_IMControl_Group + * @since 1.1.0 + */ +EAPI void +ecore_imf_context_input_panel_caps_mode_set (Ecore_IMF_Context *ctx, + Ecore_IMF_Input_Panel_Caps_Mode mode) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_input_panel_caps_mode_set"); + return; + } + + if (ctx->klass->input_panel_caps_mode_set) ctx->klass->input_panel_caps_mode_set(ctx, mode); +}