char *preedit_text;
char *preedit_commit;
+ char *language;
Eina_List *preedit_attrs;
int32_t preedit_cursor;
}
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
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);
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));
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;
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 */