Set language locale in wayland environment 86/44286/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Mon, 20 Jul 2015 13:23:34 +0000 (22:23 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 21 Jul 2015 01:44:06 +0000 (10:44 +0900)
Change-Id: Ia761814aa24b3c89f81a800b338ddc0cf4357d62

ism/demos/isf_imcontrol_efl.cpp
ism/extras/efl_wsc/isf_wsc_efl.cpp

index 2ff9f3f..99208c1 100644 (file)
@@ -36,6 +36,7 @@ static void test_input_panel_imdata_get (void *data, Evas_Object *obj, void *eve
 static void test_input_panel_layout_set (void *data, Evas_Object *obj, void *event_info);
 static void test_input_panel_layout_get (void *data, Evas_Object *obj, void *event_info);
 static void test_input_panel_state_get (void *data, Evas_Object *obj, void *event_info);
+static void test_input_panel_language_locale_get (void *data, Evas_Object *obj, void *event_info);
 static void test_get_active_ise (void *data, Evas_Object *obj, void *event_info);
 static void test_get_ise_list (void *data, Evas_Object *obj, void *event_info);
 static void test_get_ise_info (void *data, Evas_Object *obj, void *event_info);
@@ -55,6 +56,7 @@ static struct _menu_item imcontrol_menu_its[] = {
     { "INPUT PANEL LAYOUT SET", test_input_panel_layout_set },
     { "INPUT PANEL LAYOUT GET", test_input_panel_layout_get },
     { "INPUT PANEL STATE GET", test_input_panel_state_get },
+    { "LANGUAGE LOCALE GET", test_input_panel_language_locale_get },
     { "GET ACTIVE ISE", test_get_active_ise },
     { "GET ACTIVE ISE INFO", test_get_ise_info },
     { "GET INITIAL ISE", test_get_initial_ise },
@@ -141,6 +143,19 @@ static void test_input_panel_state_get (void *data, Evas_Object *obj, void *even
     }
 }
 
+static void test_input_panel_language_locale_get (void *data, Evas_Object *obj, void *event_info)
+{
+    char *locale = NULL;
+
+    if (imf_context != NULL) {
+        ecore_imf_context_input_panel_language_locale_get (imf_context, &locale);
+        LOGD ("locale : %s\n", locale);
+    }
+
+    if (locale)
+        free (locale);
+}
+
 static void test_get_active_ise (void *data, Evas_Object *obj, void *event_info)
 {
     char *uuid = NULL;
@@ -261,7 +276,8 @@ static void test_api (void *data, Evas_Object *obj, void *event_info)
     if (it)
         elm_genlist_item_selected_set (it, EINA_FALSE);
 
-    imcontrol_menu_its[j].func (NULL, obj, event_info);
+    if (imcontrol_menu_its[j].func)
+        imcontrol_menu_its[j].func (NULL, obj, event_info);
 }
 
 static Eina_Bool _nf_back_event_cb (void *data, Elm_Object_Item *it)
index 9fe557d..e464f1e 100755 (executable)
@@ -173,7 +173,7 @@ _wsc_im_ctx_commit_state(void *data, struct wl_input_method_context *im_ctx, uin
     if (wsc->surrounding_text)
         LOGD ("Surrounding text updated: %s", wsc->surrounding_text);
 
-    if(wsc->language)
+    if (wsc->language)
         wl_input_method_context_language (im_ctx, wsc->serial, wsc->language);
 
     wl_input_method_context_text_direction (im_ctx, wsc->serial, wsc->text_direction);
@@ -419,6 +419,11 @@ _wsc_im_activate(void *data, struct wl_input_method *input_method, struct wl_inp
     wsc->keyboard = wl_input_method_context_grab_keyboard(im_ctx);
     wl_keyboard_add_listener(wsc->keyboard, &wsc_im_keyboard_listener, wsc);
 
+    if (wsc->language)
+        wl_input_method_context_language (im_ctx, wsc->serial, wsc->language);
+
+    wl_input_method_context_text_direction (im_ctx, wsc->serial, wsc->text_direction);
+
     wsc->context_changed = EINA_TRUE;
     isf_wsc_context_focus_in (wsc->wsc_ctx);
     isf_wsc_context_input_panel_show (wsc->wsc_ctx);
@@ -560,8 +565,6 @@ _wsc_free (struct weescim *wsc)
         wsc->wsc_ctx = NULL;
     }
 
-    isf_wsc_context_shutdown ();
-
     if (wsc->preedit_str) {
         free (wsc->preedit_str);
         wsc->preedit_str = NULL;
@@ -571,6 +574,13 @@ _wsc_free (struct weescim *wsc)
         free (wsc->surrounding_text);
         wsc->surrounding_text = NULL;
     }
+
+    if (wsc->language) {
+        free (wsc->language);
+        wsc->language = NULL;
+    }
+
+    isf_wsc_context_shutdown ();
 }
 
 int main (int argc EINA_UNUSED, char **argv EINA_UNUSED)