Support language to set ecore_imf_context_input_panel_language_set() 26/251226/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Mon, 11 Jan 2021 13:01:50 +0000 (22:01 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 12 Jan 2021 06:33:33 +0000 (15:33 +0900)
Change-Id: I6c269e79d5830c87014f0e4615e57f4cda8273fb
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/include/ise.h
src/ise.cpp

index b60b25c..b1218bd 100644 (file)
@@ -188,6 +188,7 @@ typedef struct {
     std::string multitap_value;
     SCLKeyModifier prev_modifier;
     sclboolean disable_force_latin;
+    sclboolean prefer_latin;
 } KEYBOARD_STATE;
 
 CSCLUI* get_ui();
index 8fe98ce..240d087 100644 (file)
@@ -105,6 +105,7 @@ static KEYBOARD_STATE g_keyboard_state = {
     FALSE,
     "",
     KEY_MODIFIER_NONE,
+    FALSE,
     FALSE
 };
 
@@ -1586,12 +1587,20 @@ ise_show(int ic)
         LANGUAGE_INFO *info =
             (config_values ? _language_manager.get_language_info(config_values->selected_language.c_str()) : NULL);
         if (info) {
-            if (g_ise_default_values[keyboard_state->layout].force_latin && !(info->is_latin_language)) {
+            if (!info->is_latin_language) {
                 if (!keyboard_state->disable_force_latin) {
-                    force_primary_latin = TRUE;
+                    if (g_ise_default_values[keyboard_state->layout].force_latin) {
+                        force_primary_latin = TRUE;
+                    }
+                    else {
+                        if (keyboard_state->prefer_latin) {
+                            force_primary_latin = TRUE;
+                        }
+                    }
                 }
             }
         }
+
         if (force_primary_latin) {
             /* If there is enabled latin-based language, select it */
             sclboolean selected = FALSE;
@@ -2747,13 +2756,18 @@ static void ime_app_show_cb(int ic, ime_context_h ime_ctx, void *user_data)
 
     ise_reset_context(); // reset ISE
 
-    // if (iseContext.language == ECORE_IMF_INPUT_PANEL_LANG_ALPHABET) {
-    //     LOGD("alphabet");
-    //     ise_explictly_set_language(PRIMARY_LATIN_LANGUAGE_INDEX);
-    // }
-    // else {
-    //     LOGD("non-alphabet");
-    // }
+    KEYBOARD_STATE *keyboard_state = get_keyboard_state();
+
+    if (iseContext.language == ECORE_IMF_INPUT_PANEL_LANG_ALPHABET) {
+        LOGD("prefer latin");
+        if (keyboard_state)
+            keyboard_state->prefer_latin = TRUE;
+    }
+    else {
+        LOGD("prefer automatic");
+        if (keyboard_state)
+            keyboard_state->prefer_latin = FALSE;
+    }
 
     _context_layout = iseContext.layout;
     _context_layout_variation = iseContext.layout_variation;