Fix issue IME doesn't appear after IME is restarted 33/187233/1
authorInHong Han <inhong1.han@samsung.com>
Tue, 21 Aug 2018 05:32:36 +0000 (14:32 +0900)
committerInHong Han <inhong1.han@samsung.com>
Tue, 21 Aug 2018 05:47:59 +0000 (14:47 +0900)
Change-Id: If12e3323ee14e92e6166b1153afbf81bea869994

ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp
ism/src/isf_info_manager.cpp
ism/src/isf_panel_agent_base.cpp
ism/src/isf_panel_agent_base.h
ism/src/isf_panel_agent_manager.cpp
ism/src/isf_panel_agent_manager.h

index 3690fa4..15e99fe 100644 (file)
@@ -3509,6 +3509,14 @@ public:
                     wsc_context_input_panel_layout_variation_get (ic), wsc_context_autocapital_type_get (ic), ic->return_key_disabled);
         }
     }
+
+    void request_ise_reshow (int id, uint32 context_id) {
+        LOGD ("client id:%d", id);
+        WSCContextISF* ic = find_ic (context_id);
+        if (!ic) return;
+
+        wl_input_method_context_reshow_input_panel (ic->im_ctx);
+    }
 };
 
 extern "C" {
index 4887551..1fab5b7 100644 (file)
@@ -2275,6 +2275,7 @@ public:
                 focused_context = 0;
             }
 
+            m_panel_agent_manager.request_ise_reshow (focused_client, focused_context);
             m_panel_agent_manager.update_entry_metadata (focused_client, focused_context);
             uint32 ctx = get_helper_ic (focused_client, focused_context);
             bool ret = show_helper (m_current_helper_uuid, m_ise_context_buffer, m_ise_context_length, ctx);
index 99f76a1..77b2339 100644 (file)
@@ -531,6 +531,10 @@ void PanelAgentBase::send_fail_reply (int client)
 void PanelAgentBase::update_entry_metadata (int client, uint32 context)
 {
 }
+
+void PanelAgentBase::request_ise_reshow (int client, uint32 context)
+{
+}
 } /* namespace scim */
 
 /*
index 39a27fb..ccc3d8c 100644 (file)
@@ -1033,6 +1033,15 @@ public:
     * @return none.
     */
     virtual void update_entry_metadata (int client, uint32 context);
+
+    /**
+    * @brief request_ise_reshow.
+    *
+    * @param
+    *
+    * @return none.
+    */
+    virtual void request_ise_reshow (int client, uint32 context);
 };
 
 /**  @} */
index 6a57c4a..961396d 100644 (file)
@@ -998,6 +998,14 @@ void PanelAgentManager::update_entry_metadata (int id, uint32 context_id)
         _p->update_entry_metadata (id, context_id);
 }
 
+void PanelAgentManager::request_ise_reshow (int id, uint32 context_id)
+{
+    PanelAgentPointer _p = m_impl->get_panel_agent_by_id (id);
+
+    if (!_p.null ())
+        _p->request_ise_reshow (id, context_id);
+}
+
 } /* namespace scim */
 
 /*
index c9faa9f..5ddfb77 100644 (file)
@@ -369,6 +369,7 @@ public:
     void set_prediction_allow (int id, uint32 context_id, String uuid, int mode);
     void send_fail_reply (int client);
     void update_entry_metadata(int client, uint32 context_id);
+    void request_ise_reshow(int client, uint32 context_id);
 };
 
 /**  @} */