From 7a7ee4df791e0e17235dbc2d22a0457d8a9f825d Mon Sep 17 00:00:00 2001 From: InHong Han Date: Tue, 11 Sep 2018 10:44:37 +0900 Subject: [PATCH] Add return_key_type in remote_control_entry_metadata Change-Id: I84a7dbd676e2424901e5f9f911ad026e47567066 --- .../ecore_socket_panel_agent_module.cpp | 3 ++- ism/modules/panelagent/wayland/isf_wsc_context.h | 3 ++- .../wayland/wayland_panel_agent_module.cpp | 24 ++++++++++++++++------ ism/src/isf_info_manager.cpp | 9 ++++---- ism/src/isf_info_manager.h | 2 +- ism/src/isf_panel_agent_base.cpp | 2 +- ism/src/isf_panel_agent_base.h | 2 +- ism/src/isf_panel_agent_manager.cpp | 4 ++-- ism/src/isf_panel_agent_manager.h | 2 +- ism/src/isf_remote_client.cpp | 14 +++++++------ ism/src/isf_remote_client.h | 2 +- ism/src/isf_remote_control.cpp | 9 ++++---- ism/src/isf_remote_control.h | 1 + 13 files changed, 48 insertions(+), 29 deletions(-) diff --git a/ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp b/ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp index dbdc1ef..f4e2dff 100644 --- a/ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp +++ b/ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp @@ -1146,7 +1146,7 @@ private: } } - void socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled) { + void socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type) { SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n"; LOGD ("client id:%d", client); @@ -1164,6 +1164,7 @@ private: m_send_trans.put_data(variation); m_send_trans.put_data(autocapital_type); m_send_trans.put_data(return_key_disabled); + m_send_trans.put_data(return_key_type); m_send_trans.write_to_socket(client_socket); } } diff --git a/ism/modules/panelagent/wayland/isf_wsc_context.h b/ism/modules/panelagent/wayland/isf_wsc_context.h index 6342432..1380f0b 100644 --- a/ism/modules/panelagent/wayland/isf_wsc_context.h +++ b/ism/modules/panelagent/wayland/isf_wsc_context.h @@ -168,7 +168,8 @@ void isf_wsc_context_bidi_direction_set (WSCContextISF* wsc_ctx, Ecore_IMF_BiDi_ void isf_wsc_context_send_surrounding_text (WSCContextISF* wsc_ctx, const char *text, int cursor); void isf_wsc_context_send_entry_metadata (WSCContextISF* wsc_ctx, Ecore_IMF_Input_Hints hint, Ecore_IMF_Input_Panel_Layout layout, int variation, - Ecore_IMF_Autocapital_Type type, int return_key_disabled); + Ecore_IMF_Autocapital_Type type, int return_key_disabled, + Ecore_IMF_Input_Panel_Return_Key_Type return_key_type); #if !(ENABLE_GRAB_KEYBOARD) void isf_wsc_context_filter_key_event (WSCContextISF* wsc_ctx, diff --git a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp index 15e99fe..6a11640 100644 --- a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp +++ b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp @@ -88,6 +88,7 @@ struct _WSCContextISFImpl { Ecore_IMF_Input_Hints input_hint; Ecore_IMF_BiDi_Direction bidi_direction; Ecore_IMF_Input_Panel_Layout panel_layout; + Ecore_IMF_Input_Panel_Return_Key_Type return_key_type; String mime_type; void *imdata; int imdata_size; @@ -117,6 +118,7 @@ struct _WSCContextISFImpl { input_hint(ECORE_IMF_INPUT_HINT_NONE), bidi_direction(ECORE_IMF_BIDI_DIRECTION_NEUTRAL), panel_layout(ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL), + return_key_type(ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT), imdata(NULL), imdata_size(0), preedit_caret(0), @@ -305,7 +307,8 @@ _wsc_im_ctx_content_type (void *data, struct wl_input_method_context *im_ctx, ui if (_TV) { isf_wsc_context_send_entry_metadata (wsc_ctx, wsc_context_input_hint_get (wsc_ctx), wsc_context_input_panel_layout_get (wsc_ctx), - wsc_context_input_panel_layout_variation_get (wsc_ctx), wsc_context_autocapital_type_get (wsc_ctx), wsc_ctx->return_key_disabled); + wsc_context_input_panel_layout_variation_get (wsc_ctx), wsc_context_autocapital_type_get (wsc_ctx), wsc_ctx->return_key_disabled, + (Ecore_IMF_Input_Panel_Return_Key_Type)wsc_ctx->return_key_type); } } @@ -366,6 +369,10 @@ _wsc_im_ctx_return_key_type (void *data, struct wl_input_method_context *im_ctx, if (wsc_ctx->return_key_type != return_key_type) { wsc_ctx->return_key_type = return_key_type; isf_wsc_context_input_panel_return_key_type_set (wsc_ctx, (Ecore_IMF_Input_Panel_Return_Key_Type)wsc_ctx->return_key_type); + if (_TV) + isf_wsc_context_send_entry_metadata (wsc_ctx, wsc_context_input_hint_get (wsc_ctx), wsc_context_input_panel_layout_get (wsc_ctx), + wsc_context_input_panel_layout_variation_get (wsc_ctx), wsc_context_autocapital_type_get (wsc_ctx), wsc_ctx->return_key_disabled, + (Ecore_IMF_Input_Panel_Return_Key_Type)wsc_ctx->return_key_type); } } @@ -383,7 +390,8 @@ _wsc_im_ctx_return_key_disabled (void *data, struct wl_input_method_context *im_ isf_wsc_context_input_panel_return_key_disabled_set (wsc_ctx, wsc_ctx->return_key_disabled); if (_TV) isf_wsc_context_send_entry_metadata (wsc_ctx, wsc_context_input_hint_get (wsc_ctx), wsc_context_input_panel_layout_get (wsc_ctx), - wsc_context_input_panel_layout_variation_get (wsc_ctx), wsc_context_autocapital_type_get (wsc_ctx), wsc_ctx->return_key_disabled); + wsc_context_input_panel_layout_variation_get (wsc_ctx), wsc_context_autocapital_type_get (wsc_ctx), wsc_ctx->return_key_disabled, + (Ecore_IMF_Input_Panel_Return_Key_Type)wsc_ctx->return_key_type); } } @@ -1586,7 +1594,8 @@ isf_wsc_context_send_surrounding_text (WSCContextISF* wsc_ctx, const char *text, void isf_wsc_context_send_entry_metadata (WSCContextISF* wsc_ctx, Ecore_IMF_Input_Hints hint, Ecore_IMF_Input_Panel_Layout layout, int variation, - Ecore_IMF_Autocapital_Type type, int return_key_disabled) + Ecore_IMF_Autocapital_Type type, int return_key_disabled, + Ecore_IMF_Input_Panel_Return_Key_Type return_key_type) { SCIM_DEBUG_FRONTEND(1) << __FUNCTION__ << "...\n"; @@ -1595,7 +1604,7 @@ isf_wsc_context_send_entry_metadata (WSCContextISF* wsc_ctx, Ecore_IMF_Input_Hin if (context_scim && context_scim->impl) { if (!context_scim->impl->init_remote_entry_metadata || (context_scim->impl->input_hint != hint || context_scim->impl->panel_layout != layout || context_scim->impl->variation != variation || context_scim->impl->autocapital_type != type || - context_scim->impl->return_key_disabled != return_key_disabled)) { + context_scim->impl->return_key_disabled != return_key_disabled || context_scim->impl->return_key_type != return_key_type)) { if (context_scim->impl->panel_layout != layout || context_scim->impl->variation != variation) { if (context_scim->impl->input_resource == INPUT_RESOURCE_REMOTE) context_scim->impl->input_resource = INPUT_RESOURCE_NONE; @@ -1606,10 +1615,12 @@ isf_wsc_context_send_entry_metadata (WSCContextISF* wsc_ctx, Ecore_IMF_Input_Hin context_scim->impl->variation = variation; context_scim->impl->autocapital_type = type; context_scim->impl->return_key_disabled = return_key_disabled; + context_scim->impl->return_key_type = return_key_type; if (_TV) g_info_manager->remoteinput_callback_entry_metadata (context_scim->impl->input_hint, context_scim->impl->panel_layout, - context_scim->impl->variation, context_scim->impl->autocapital_type, context_scim->impl->return_key_disabled); + context_scim->impl->variation, context_scim->impl->autocapital_type, context_scim->impl->return_key_disabled, + context_scim->impl->return_key_type); context_scim->impl->init_remote_entry_metadata = true; @@ -3506,7 +3517,8 @@ public: 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); + wsc_context_input_panel_layout_variation_get (ic), wsc_context_autocapital_type_get (ic), ic->return_key_disabled, + (Ecore_IMF_Input_Panel_Return_Key_Type)ic->return_key_type); } } diff --git a/ism/src/isf_info_manager.cpp b/ism/src/isf_info_manager.cpp index 1fb3fc6..b01ec56 100644 --- a/ism/src/isf_info_manager.cpp +++ b/ism/src/isf_info_manager.cpp @@ -3113,11 +3113,12 @@ client context helpers: %d, helpers uuid count: %d", } } - void remoteinput_callback_entry_metadata (uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled) { + void remoteinput_callback_entry_metadata (uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type) { SCIM_DEBUG_MAIN (4) << __FUNCTION__ << "...\n"; if (m_ise_context_buffer != NULL && m_ise_context_length > 0) { Ise_Context *iseContext = reinterpret_cast(m_ise_context_buffer); iseContext->layout = static_cast(layout); + iseContext->return_key_type = static_cast(return_key_type); iseContext->return_key_disabled = static_cast(return_key_disabled); iseContext->layout_variation = static_cast(variation); iseContext->autocapital_type = static_cast(autocapital_type); @@ -3125,7 +3126,7 @@ client context helpers: %d, helpers uuid count: %d", } for (unsigned int i = 0; i < m_current_recv_remoteinput_id.size (); i++) { lock(); - m_panel_agent_manager.socket_remoteinput_entry_metadata (m_current_recv_remoteinput_id.at (i), hint, layout, variation, autocapital_type, return_key_disabled); + m_panel_agent_manager.socket_remoteinput_entry_metadata (m_current_recv_remoteinput_id.at (i), hint, layout, variation, autocapital_type, return_key_disabled, return_key_type); unlock (); } } @@ -5120,9 +5121,9 @@ void InfoManager::remoteinput_callback_focus_out (void) m_impl->remoteinput_callback_focus_out (); } -void InfoManager::remoteinput_callback_entry_metadata (uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled) +void InfoManager::remoteinput_callback_entry_metadata (uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type) { - m_impl->remoteinput_callback_entry_metadata (hint, layout, variation, autocapital_type, return_key_disabled); + m_impl->remoteinput_callback_entry_metadata (hint, layout, variation, autocapital_type, return_key_disabled, return_key_type); } void InfoManager::remoteinput_callback_surrounding_text (String text, uint32 cursor) diff --git a/ism/src/isf_info_manager.h b/ism/src/isf_info_manager.h index 54b3851..2a83785 100644 --- a/ism/src/isf_info_manager.h +++ b/ism/src/isf_info_manager.h @@ -587,7 +587,7 @@ public: void remoteinput_callback_focus_out (void); - void remoteinput_callback_entry_metadata (uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled); + void remoteinput_callback_entry_metadata (uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type); void remoteinput_callback_surrounding_text (String text, uint32 cursor); diff --git a/ism/src/isf_panel_agent_base.cpp b/ism/src/isf_panel_agent_base.cpp index 77b2339..c50e338 100644 --- a/ism/src/isf_panel_agent_base.cpp +++ b/ism/src/isf_panel_agent_base.cpp @@ -333,7 +333,7 @@ void PanelAgentBase::socket_remoteinput_focus_out (int client) { } -void PanelAgentBase::socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled) +void PanelAgentBase::socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type) { } diff --git a/ism/src/isf_panel_agent_base.h b/ism/src/isf_panel_agent_base.h index ccc3d8c..b83cabd 100644 --- a/ism/src/isf_panel_agent_base.h +++ b/ism/src/isf_panel_agent_base.h @@ -635,7 +635,7 @@ public: * * @return none. */ - virtual void socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled); + virtual void socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type); /** * @brief socket_remoteinput_surrounding_text. diff --git a/ism/src/isf_panel_agent_manager.cpp b/ism/src/isf_panel_agent_manager.cpp index 961396d..3e7fbf9 100644 --- a/ism/src/isf_panel_agent_manager.cpp +++ b/ism/src/isf_panel_agent_manager.cpp @@ -644,12 +644,12 @@ void PanelAgentManager::socket_remoteinput_focus_out (int id) _p->socket_remoteinput_focus_out (id); } -void PanelAgentManager::socket_remoteinput_entry_metadata (int id, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled) +void PanelAgentManager::socket_remoteinput_entry_metadata (int id, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type) { PanelAgentPointer _p = m_impl->get_panel_agent_by_id (id); if (!_p.null ()) - _p->socket_remoteinput_entry_metadata (id, hint, layout, variation, autocapital_type, return_key_disabled); + _p->socket_remoteinput_entry_metadata (id, hint, layout, variation, autocapital_type, return_key_disabled, return_key_type); } void PanelAgentManager::socket_remoteinput_surrounding_text (int id, String& text, uint32 cursor) diff --git a/ism/src/isf_panel_agent_manager.h b/ism/src/isf_panel_agent_manager.h index 5ddfb77..2bf5d14 100644 --- a/ism/src/isf_panel_agent_manager.h +++ b/ism/src/isf_panel_agent_manager.h @@ -324,7 +324,7 @@ public: void socket_update_surrounding_text (int client, uint32 context, const String& uuid, String& text, uint32 cursor); void socket_remoteinput_focus_in (int client); void socket_remoteinput_focus_out (int client); - void socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled); + void socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type); void socket_remoteinput_surrounding_text (int client, String& text, uint32 cursor); void socket_remoteinput_input_resource (int client, uint32 input_resource); void socket_update_selection (int client, uint32 context, String& uuid, String text); diff --git a/ism/src/isf_remote_client.cpp b/ism/src/isf_remote_client.cpp index a3d2062..35348b4 100644 --- a/ism/src/isf_remote_client.cpp +++ b/ism/src/isf_remote_client.cpp @@ -142,7 +142,7 @@ class RemoteInputClient::RemoteInputClientImpl RemoteInputClientSignalVoid m_signal_hide_ise; String m_surrounding_text; - uint32 m_hint, m_cursor, m_layout, m_variation, m_autocapital_type, m_input_resource, m_return_key_disabled; + uint32 m_hint, m_cursor, m_layout, m_variation, m_autocapital_type, m_input_resource, m_return_key_disabled, m_return_key_type; public: RemoteInputClientImpl () @@ -156,7 +156,8 @@ public: m_variation (0), m_autocapital_type (0), m_input_resource (0), - m_return_key_disabled (0) { + m_return_key_disabled (0), + m_return_key_type (0) { } int open_connection (void) { @@ -349,7 +350,7 @@ public: type = REMOTE_CONTROL_CALLBACK_ENTRY_METADATA; if (m_trans_recv.get_data (m_hint) && m_trans_recv.get_data (m_layout) && m_trans_recv.get_data (m_variation) && - m_trans_recv.get_data (m_autocapital_type) && m_trans_recv.get_data (m_return_key_disabled)) { + m_trans_recv.get_data (m_autocapital_type) && m_trans_recv.get_data (m_return_key_disabled) && m_trans_recv.get_data (m_return_key_type)) { } else LOGW ("wrong format of transaction"); @@ -382,12 +383,13 @@ public: return type; } - void get_entry_metadata (int *hint, int *layout, int *variation, int *autocapital_type, int *return_key_disabled) { + void get_entry_metadata (int *hint, int *layout, int *variation, int *autocapital_type, int *return_key_disabled, int *return_key_type) { *hint = m_hint; *layout = m_layout; *variation = m_variation; *autocapital_type = m_autocapital_type; *return_key_disabled = m_return_key_disabled; + *return_key_type = m_return_key_type; } void get_surrounding_text (String &surrounding_text, int *cursor) { @@ -465,9 +467,9 @@ RemoteInputClient::recv_callback_message (void) } void -RemoteInputClient::get_entry_metadata (int *hint, int *layout, int *variation, int *autocapital_type, int *return_key_disabled) +RemoteInputClient::get_entry_metadata (int *hint, int *layout, int *variation, int *autocapital_type, int *return_key_disabled, int *return_key_type) { - m_impl->get_entry_metadata (hint, layout, variation, autocapital_type, return_key_disabled); + m_impl->get_entry_metadata (hint, layout, variation, autocapital_type, return_key_disabled, return_key_type); } void diff --git a/ism/src/isf_remote_client.h b/ism/src/isf_remote_client.h index e7e9883..6bd88f7 100644 --- a/ism/src/isf_remote_client.h +++ b/ism/src/isf_remote_client.h @@ -63,7 +63,7 @@ public: remote_client_error_type check_privilege (void); remote_client_error_type delete_surrounding_text(int offset, int len); remote_control_callback_type recv_callback_message (void); - void get_entry_metadata (int *hint, int *layout, int *variation, int *autocapital_type, int *return_key_disabled); + void get_entry_metadata (int *hint, int *layout, int *variation, int *autocapital_type, int *return_key_disabled, int *return_key_type); void get_surrounding_text (String &default_text, int *cursor); void get_input_resource (int *input_resource); }; diff --git a/ism/src/isf_remote_control.cpp b/ism/src/isf_remote_control.cpp index b08af61..bffc1bd 100644 --- a/ism/src/isf_remote_control.cpp +++ b/ism/src/isf_remote_control.cpp @@ -85,17 +85,18 @@ remote_handler(GIOChannel *source, GIOCondition condition, gpointer user_data) { if (focus_flag) { remote_control_entry_metadata_s *data = new remote_control_entry_metadata_s; - int hint = 0, layout = 0, variation = 0, autocapital_type = 0, return_key_disabled = 0; + int hint = 0, layout = 0, variation = 0, autocapital_type = 0, return_key_disabled = 0, return_key_type = 0; - client->remote_client->get_entry_metadata (&hint, &layout, &variation, &autocapital_type, &return_key_disabled); + client->remote_client->get_entry_metadata (&hint, &layout, &variation, &autocapital_type, &return_key_disabled, &return_key_type); data->hint = static_cast (hint); data->layout = static_cast (layout); data->variation = variation; data->autocapital_type = static_cast (autocapital_type); data->return_key_disabled = return_key_disabled; + data->return_key_type = static_cast (return_key_type); - LOGD ("REMOTE_CONTROL_CALLBACK_ENTRY_METADATA: hint=0x%04x, layout=%d, variation=%d, autocap=%d, retKey_disabled=%d", - data->hint, data->layout, data->variation, data->autocapital_type, data->return_key_disabled); + LOGD ("REMOTE_CONTROL_CALLBACK_ENTRY_METADATA: hint=0x%04x, layout=%d, variation=%d, autocap=%d, retKey_disabled=%d, retKey_type=%d", + data->hint, data->layout, data->variation, data->autocapital_type, data->return_key_disabled, data->return_key_type); if (client->metadata_cb) client->metadata_cb (client->metadata_cb_user_data, data); diff --git a/ism/src/isf_remote_control.h b/ism/src/isf_remote_control.h index 839077a..39b6aec 100644 --- a/ism/src/isf_remote_control.h +++ b/ism/src/isf_remote_control.h @@ -74,6 +74,7 @@ typedef struct { int variation; /**< The layout variation information */ Ecore_IMF_Autocapital_Type autocapital_type; /**< The autocapital type information */ bool return_key_disabled; /**< The return key state information */ + Ecore_IMF_Input_Panel_Return_Key_Type return_key_type; /**< The return key type information */ } remote_control_entry_metadata_s; /** -- 2.7.4