From 7acd07104c84c982abedd8ef8eebb3e21514b743 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 11 Jan 2021 22:01:50 +0900 Subject: [PATCH] Support language to set ecore_imf_context_input_panel_language_set() Change-Id: I6c269e79d5830c87014f0e4615e57f4cda8273fb Signed-off-by: Jihoon Kim --- src/include/ise.h | 1 + src/ise.cpp | 32 +++++++++++++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/include/ise.h b/src/include/ise.h index b60b25c..b1218bd 100644 --- a/src/include/ise.h +++ b/src/include/ise.h @@ -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(); diff --git a/src/ise.cpp b/src/ise.cpp index 8fe98ce..240d087 100644 --- a/src/ise.cpp +++ b/src/ise.cpp @@ -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; -- 2.7.4