Modified to send entry metadata after IME is shown in on-demand mode 79/173679/4
authorInHong Han <inhong1.han@samsung.com>
Tue, 13 Mar 2018 10:00:54 +0000 (19:00 +0900)
committerInHong Han <inhong1.han@samsung.com>
Thu, 29 Mar 2018 01:06:00 +0000 (01:06 +0000)
Change-Id: I631a4b02679260da8202e1b7154ca72c074aafb9

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 612ecab..229a86e 100644 (file)
@@ -3465,6 +3465,42 @@ public:
             wl_input_method_context_update_candidate_state(ic->im_ctx, 0);
         }
     }
+
+    void update_entry_metadata (int id, uint32 context_id) {
+        LOGD ("client id:%d", id);
+        WSCContextISF* ic = find_ic(context_id);
+        if (!ic || !ic->im_ctx) return;
+
+        if (ic->layout_initialized)
+            isf_wsc_context_input_panel_layout_set (ic, wsc_context_input_panel_layout_get (ic));
+
+        if (ic->prediction_allow_initialized)
+            g_info_manager->set_prediction_allow (WAYLAND_MODULE_CLIENT_ID, wsc_context_prediction_allow_get (ic));
+
+        if (ic->autocapital_type_initialized)
+            isf_wsc_context_autocapital_type_set (ic, wsc_context_autocapital_type_get (ic));
+
+        if (ic->language_initialized)
+            isf_wsc_context_input_panel_language_set (ic, wsc_context_input_panel_language_get (ic));
+
+        g_info_manager->socket_update_cursor_position (ic->surrounding_cursor);
+        isf_wsc_context_input_panel_return_key_type_set (ic, (Ecore_IMF_Input_Panel_Return_Key_Type)ic->return_key_type);
+        isf_wsc_context_input_panel_return_key_disabled_set (ic, ic->return_key_disabled);
+
+        if (ic->impl)
+            isf_wsc_context_input_panel_imdata_set (ic, (void *)ic->impl->imdata, ic->impl->imdata_size);
+
+        isf_wsc_context_bidi_direction_set (ic, (Ecore_IMF_BiDi_Direction)ic->bidi_direction);
+        isf_wsc_context_input_panel_caps_mode_set (ic, ic->caps_mode);
+
+        if (ic->impl)
+            isf_wsc_context_input_panel_mime_type_accept_set (ic, ic->impl->mime_type.c_str ());
+
+        if (_TV) {
+            isf_wsc_context_send_entry_metadata (ic, wsc_context_input_hint_get (ic),  wsc_context_input_panel_layout_get (ic),
+                    wsc_context_input_panel_layout_variation_get (ic), wsc_context_autocapital_type_get (ic), ic->return_key_disabled);
+        }
+    }
 };
 
 extern "C" {
index 1143c4b..a23b14a 100644 (file)
@@ -2171,6 +2171,7 @@ public:
             focus_in_helper (m_current_helper_uuid, m_current_socket_client, m_current_client_context);
             reset_keyboard_ise ();
         }
+
         /* Check whether ISE panel is already shown */
         if (TOOLBAR_HELPER_MODE == m_current_toolbar_mode && m_ise_context_length > 0) {
             LOGD ("Re-show input_panel");
@@ -2185,6 +2186,7 @@ public:
                 focused_context = 0;
             }
 
+            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);
             if (ret)
index 463936a..f42a645 100644 (file)
@@ -523,6 +523,10 @@ void PanelAgentBase::set_prediction_allow (int client, uint32 context, String uu
 void PanelAgentBase::send_fail_reply (int client)
 {
 }
+
+void PanelAgentBase::update_entry_metadata (int client, uint32 context)
+{
+}
 } /* namespace scim */
 
 /*
index 9615f2f..43f1078 100644 (file)
@@ -1015,6 +1015,15 @@ public:
      * @return none.
      */
     virtual void commit_content (int client, uint32 context, const String& content, const String& description, const String& mime_types);
+
+    /**
+    * @brief update_entry_metadata.
+    *
+    * @param
+    *
+    * @return none.
+    */
+    virtual void update_entry_metadata (int client, uint32 context);
 };
 
 /**  @} */
index 004cd79..9bfe8bc 100644 (file)
@@ -982,6 +982,14 @@ void PanelAgentManager::send_fail_reply (int id)
         _p->send_fail_reply (id);
 }
 
+void PanelAgentManager::update_entry_metadata (int id, uint32 context_id)
+{
+    PanelAgentPointer _p = m_impl->get_panel_agent_by_id (id);
+
+    if (!_p.null ())
+        _p->update_entry_metadata (id, context_id);
+}
+
 } /* namespace scim */
 
 /*
index 9bfb565..818c384 100644 (file)
@@ -367,6 +367,7 @@ public:
     void remote_delete_surrounding_text (int client, uint32 context_id, uint32 offset, uint32 len);
     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);
 };
 
 /**  @} */