Add signal, slot to Infomanager for restarting IME in on-demand mode 75/188375/4
authorInHong Han <inhong1.han@samsung.com>
Tue, 4 Sep 2018 09:24:11 +0000 (18:24 +0900)
committerInHong Han <inhong1.han@samsung.com>
Tue, 4 Sep 2018 10:14:36 +0000 (10:14 +0000)
isf_panel_efl doesn't know the status of the IME.

Change-Id: I4cb075419ab727769e0c99138686d2d24c8d192d

ism/extras/efl_panel/isf_panel_efl.cpp
ism/src/isf_info_manager.cpp
ism/src/isf_info_manager.h

index aba7af4..de92774 100644 (file)
@@ -262,7 +262,7 @@ static void       slot_candidate_will_hide_ack         (void);
 static void       slot_set_keyboard_mode               (int mode);
 static void       slot_get_ise_state                   (int &state);
 static void       slot_start_default_ise               (void);
-static void       slot_stop_default_ise                (void);
+static void       slot_stop_default_ise                (bool is_exist);
 static void       slot_run_helper                      (const String &uuid, const String &config, const String &display);
 static bool       slot_launch_option_application       (String ime_appid);
 
@@ -6509,19 +6509,24 @@ static void slot_start_default_ise (void)
     }
 }
 
-static void slot_stop_default_ise (void)
+static void slot_stop_default_ise (bool is_exist)
 {
     SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
 
-    if (_launch_ise_on_request && _auto_destroy_ise && _soft_keyboard_launched) {
-        String uuid = _info_manager->get_current_helper_uuid ();
+    if (is_exist) {
+        if (_launch_ise_on_request && _auto_destroy_ise && _soft_keyboard_launched) {
+            String uuid = _info_manager->get_current_helper_uuid ();
 
-        if (uuid.length () > 0) {
-            _info_manager->hide_helper (uuid);
-            _info_manager->stop_helper (uuid);
-            _soft_keyboard_launched = false;
-            LOGD ("stop helper (%s)", uuid.c_str ());
+            if (uuid.length () > 0) {
+                _info_manager->hide_helper (uuid);
+                _info_manager->stop_helper (uuid);
+                _soft_keyboard_launched = false;
+                LOGD ("stop helper (%s)", uuid.c_str ());
+            }
         }
+    } else {
+        if (_soft_keyboard_launched)
+            _soft_keyboard_launched = false;
     }
 }
 
index 1fab5b7..1fb3fc6 100644 (file)
@@ -185,6 +185,9 @@ InfoManagerSignalIntString2;
 typedef Signal1<bool, String>
 InfoManagerSignalBoolString;
 
+typedef Signal1<void, bool>
+InfoManagerSignalBool;
+
 struct HelperClientStub {
     int id;
     int ref;
@@ -322,7 +325,7 @@ class InfoManager::InfoManagerImpl
     InfoManagerSignalIntIntInt           m_signal_update_spot_location;
     InfoManagerSignalFactoryInfo         m_signal_update_factory_info;
     InfoManagerSignalVoid                m_signal_start_default_ise;
-    InfoManagerSignalVoid                m_signal_stop_default_ise;
+    InfoManagerSignalBool                m_signal_stop_default_ise;
     InfoManagerSignalIntInt              m_signal_update_input_context;
     InfoManagerSignalString              m_signal_update_language_locale;
     InfoManagerSignalIntInt              m_signal_set_candidate_ui;
@@ -2320,7 +2323,7 @@ public:
         return m_signal_start_default_ise.connect (slot);
     }
 
-    Connection signal_connect_stop_default_ise (InfoManagerSlotVoid*                slot) {
+    Connection signal_connect_stop_default_ise (InfoManagerSlotBool*                slot) {
         return m_signal_stop_default_ise.connect (slot);
     }
 
@@ -2655,7 +2658,7 @@ public:
         }
 
         if (m_client_context_uuids.size () == 0)
-            m_signal_stop_default_ise ();
+            m_signal_stop_default_ise (true);
     }
 
     //SCIM_TRANS_CMD_PANEL_RESET_INPUT_CONTEXT
@@ -2902,7 +2905,7 @@ public:
                 m_helper_client_index.erase (uuid);
                 m_helper_info_repository.erase (hiit);
 
-                m_signal_stop_default_ise ();
+                m_signal_stop_default_ise (false);
 
                 if (m_refocus_needed || m_reshow_needed)
                     m_restart_needed = true;
@@ -5558,7 +5561,7 @@ InfoManager::signal_connect_start_default_ise (InfoManagerSlotVoid*
 }
 
 Connection
-InfoManager::signal_connect_stop_default_ise (InfoManagerSlotVoid*                slot)
+InfoManager::signal_connect_stop_default_ise (InfoManagerSlotBool*                slot)
 {
     return m_impl->signal_connect_stop_default_ise (slot);
 }
index 24531e2..54b3851 100644 (file)
@@ -193,6 +193,9 @@ InfoManagerSlotIntString2;
 typedef Slot1<bool, String>
 InfoManagerSlotBoolString;
 
+typedef Slot1<void, bool>
+InfoManagerSlotBool;
+
 /**
  * @brief The class to implement all socket protocol in Panel.
  *
@@ -1053,9 +1056,9 @@ public:
     /**
      * @brief Signal: stop default ise.
      *
-     * slot prototype: void stop_default_ise (void);
+     * slot prototype: void stop_default_ise (bool);
      */
-    Connection signal_connect_stop_default_ise (InfoManagerSlotVoid*                slot);
+    Connection signal_connect_stop_default_ise (InfoManagerSlotBool*                slot);
 
     /**
      * @brief Signal: Get the list of keyboard ise name.