ecore_imf/wayland: Add support to get input panel language locale

This commit is contained in:
Jihoon Kim 2016-02-04 11:56:13 +09:00
parent 478433f0cf
commit 7564d49a83
3 changed files with 30 additions and 3 deletions

View File

@ -44,6 +44,7 @@ struct _WaylandIMContext
char *preedit_text;
char *preedit_commit;
char *language;
Eina_List *preedit_attrs;
int32_t preedit_cursor;
@ -591,11 +592,17 @@ text_input_input_panel_state(void *data EINA_UNUSED,
}
static void
text_input_language(void *data EINA_UNUSED,
text_input_language(void *data,
struct wl_text_input *text_input EINA_UNUSED,
uint32_t serial EINA_UNUSED,
const char *language EINA_UNUSED)
const char *language)
{
WaylandIMContext *imcontext = (WaylandIMContext *)data;
if (imcontext->language)
free(imcontext->language);
imcontext->language = strdup(language ? language : "");
}
static void
@ -646,6 +653,12 @@ wayland_im_context_del(Ecore_IMF_Context *ctx)
EINA_LOG_DOM_INFO(_ecore_imf_wayland_log_dom, "context_del");
if (imcontext->language)
{
free(imcontext->language);
imcontext->language = NULL;
}
if (imcontext->text_input)
wl_text_input_destroy(imcontext->text_input);
@ -951,6 +964,16 @@ wayland_im_context_input_panel_language_set(Ecore_IMF_Context *ctx,
imcontext->content_hint &= ~WL_TEXT_INPUT_CONTENT_HINT_LATIN;
}
EAPI void
wayland_im_context_input_panel_language_locale_get(Ecore_IMF_Context *ctx,
char **locale)
{
WaylandIMContext *imcontext = (WaylandIMContext *)ecore_imf_context_data_get(ctx);
if (locale)
*locale = strdup(imcontext->language ? imcontext->language : "");
}
WaylandIMContext *wayland_im_context_new (struct wl_text_input_manager *text_input_manager)
{
WaylandIMContext *context = calloc(1, sizeof(WaylandIMContext));

View File

@ -79,6 +79,10 @@ EAPI void wayland_im_context_input_hint_set(Ecore_IMF_Context *ctx,
EAPI void wayland_im_context_input_panel_language_set(Ecore_IMF_Context *ctx,
Ecore_IMF_Input_Panel_Lang lang);
EAPI void
wayland_im_context_input_panel_language_locale_get(Ecore_IMF_Context *ctx,
char **locale);
WaylandIMContext *wayland_im_context_new (struct wl_text_input_manager *text_input_manager);
extern int _ecore_imf_wayland_log_dom;

View File

@ -79,7 +79,7 @@ static Ecore_IMF_Context_Class wayland_imf_class =
NULL, /* input_panel_state_get */
NULL, /* input_panel_event_callback_add */
NULL, /* input_panel_event_callback_del */
NULL, /* input_panel_language_locale_get */
wayland_im_context_input_panel_language_locale_get, /* input_panel_language_locale_get */
NULL, /* candidate_window_geometry_get */
wayland_im_context_input_hint_set, /* input_hint_set */
NULL /* bidi_direction_set */