Modified to apply pending caps_mode in multitap preedit mode 37/100437/2
authorJi-hoon Lee <dalton.lee@samsung.com>
Mon, 28 Nov 2016 06:31:09 +0000 (15:31 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 28 Nov 2016 06:47:09 +0000 (22:47 -0800)
Change-Id: I400746fc9dbeb5e21adf6abaf556bee7443461d2

src/ise.cpp

index 0116669..164ab96 100644 (file)
@@ -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<string> 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 {