From f5a185cb02db39bf426891c9692dfb05741d4a4e Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Mon, 28 Nov 2016 15:31:09 +0900 Subject: [PATCH] Modified to apply pending caps_mode in multitap preedit mode Change-Id: I400746fc9dbeb5e21adf6abaf556bee7443461d2 --- src/ise.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/ise.cpp b/src/ise.cpp index 0116669..164ab96 100644 --- a/src/ise.cpp +++ b/src/ise.cpp @@ -80,6 +80,7 @@ static string g_default_punctuation[MAX_DEFAULT_PUNCTUATION] = {"-", "@", "'", " static string g_current_punctuation[MAX_DEFAULT_PUNCTUATION-1] = {"RCENT1", "RCENT2", "RCENT3", "RCENT4", "RCENT5"}; static vector g_softcandidate_string; static bool g_softcandidate_show = false; +static bool g_caps_mode_pending = false; #define SOFT_CANDIDATE_DELETE_TIME (1.0/100) static Ecore_Timer *g_softcandidate_hide_timer = NULL; @@ -197,6 +198,16 @@ static void _reset_shift_state(void) } } +static void set_caps_mode(sclboolean mode) { + LOGD("mode : %d\n", mode); + if (g_ui) { + if (g_ui->get_shift_state() != SCL_SHIFT_STATE_LOCK) { + g_ui->set_shift_state(mode ? SCL_SHIFT_STATE_ON : SCL_SHIFT_STATE_OFF); + g_ui->set_autocapital_shift_state(!mode); + } + } +} + static void _reset_multitap_state(bool skip_commit = false) { LOGD("g_keyboard_state.prev_modifier : %d", g_keyboard_state.prev_modifier); @@ -209,6 +220,10 @@ static void _reset_multitap_state(bool skip_commit = false) } g_keyboard_state.multitap_value = ""; g_keyboard_state.prev_modifier = KEY_MODIFIER_NONE; + if (g_caps_mode_pending) { + g_caps_mode_pending = false; + set_caps_mode(g_keyboard_state.caps_mode); + } } static void ise_set_cm_private_key(scluint cm_key_id) @@ -796,16 +811,6 @@ ise_forward_key_event(sclulong key_event) LOGD("ic : %x, %x\n", ic, key_event); } -static void set_caps_mode(sclboolean mode) { - LOGD("mode : %d\n", mode); - if (g_ui) { - if (g_ui->get_shift_state() != SCL_SHIFT_STATE_LOCK) { - g_ui->set_shift_state(mode ? SCL_SHIFT_STATE_ON : SCL_SHIFT_STATE_OFF); - g_ui->set_autocapital_shift_state(!mode); - } - } -} - /** * @brief Delete commit timer. * @@ -1757,6 +1762,7 @@ ise_set_caps_mode(unsigned int mode) } else { g_keyboard_state.caps_mode = FALSE; } + g_caps_mode_pending = false; const sclchar * cur_lang = _language_manager.get_current_language(); if (cur_lang) { LANGUAGE_INFO *info = _language_manager.get_language_info(cur_lang); @@ -1767,6 +1773,7 @@ ise_set_caps_mode(unsigned int mode) g_keyboard_state.prev_modifier != KEY_MODIFIER_MULTITAP_REPEAT) { set_caps_mode(g_keyboard_state.caps_mode); } else { + g_caps_mode_pending = true; LOGD("Currently composing multitap string, skipping caps request"); } } else { -- 2.7.4