From: InHong Han Date: Tue, 13 Mar 2018 10:00:54 +0000 (+0900) Subject: Modified to send entry metadata after IME is shown in on-demand mode X-Git-Tag: accepted/tizen/unified/20180330.060808~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2c9db0bd24c2ac85dd21db41ee2ffd7ac4bd7a01;p=platform%2Fcore%2Fuifw%2Fisf.git Modified to send entry metadata after IME is shown in on-demand mode Change-Id: I631a4b02679260da8202e1b7154ca72c074aafb9 --- diff --git a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp index 612ecab..229a86e 100644 --- a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp +++ b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp @@ -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" { diff --git a/ism/src/isf_info_manager.cpp b/ism/src/isf_info_manager.cpp index 1143c4b..a23b14a 100644 --- a/ism/src/isf_info_manager.cpp +++ b/ism/src/isf_info_manager.cpp @@ -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) diff --git a/ism/src/isf_panel_agent_base.cpp b/ism/src/isf_panel_agent_base.cpp index 463936a..f42a645 100644 --- a/ism/src/isf_panel_agent_base.cpp +++ b/ism/src/isf_panel_agent_base.cpp @@ -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 */ /* diff --git a/ism/src/isf_panel_agent_base.h b/ism/src/isf_panel_agent_base.h index 9615f2f..43f1078 100644 --- a/ism/src/isf_panel_agent_base.h +++ b/ism/src/isf_panel_agent_base.h @@ -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); }; /** @} */ diff --git a/ism/src/isf_panel_agent_manager.cpp b/ism/src/isf_panel_agent_manager.cpp index 004cd79..9bfe8bc 100644 --- a/ism/src/isf_panel_agent_manager.cpp +++ b/ism/src/isf_panel_agent_manager.cpp @@ -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 */ /* diff --git a/ism/src/isf_panel_agent_manager.h b/ism/src/isf_panel_agent_manager.h index 9bfb565..818c384 100644 --- a/ism/src/isf_panel_agent_manager.h +++ b/ism/src/isf_panel_agent_manager.h @@ -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); }; /** @} */