diff options
author | Ji-hoon Lee <dalton.lee@samsung.com> | 2017-11-01 19:43:42 +0900 |
---|---|---|
committer | Ji-hoon Lee <dalton.lee@samsung.com> | 2017-11-07 00:47:39 +0000 |
commit | cb88e3a3227915af50e593194842bfe1aed859d9 (patch) | |
tree | caa7d6087ee68e281a672197671a81bac589aa99 /ism/modules | |
parent | f7fa8e56ff79095e3d41b70d39e364722e11efae (diff) | |
download | isf-cb88e3a3227915af50e593194842bfe1aed859d9.tar.gz isf-cb88e3a3227915af50e593194842bfe1aed859d9.tar.bz2 isf-cb88e3a3227915af50e593194842bfe1aed859d9.zip |
Return finalized_content as surrounding text when focus lost
Change-Id: Iaa2935c3502d4d75c8fdd049ef1d4b5ebbbe9178
Diffstat (limited to 'ism/modules')
6 files changed, 41 insertions, 2 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 bb74bb0f..8d6c6cf2 100644 --- a/ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp +++ b/ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp @@ -812,7 +812,7 @@ private: m_send_trans.write_to_socket(client_socket); } - void set_helper_mime_type (int client, uint32 context, const String& uuid, String& mime_type) { + void set_helper_mime_type(int client, uint32 context, const String& uuid, String& mime_type) { LOGD ("client id:%d\n", client); Socket client_socket(client); @@ -825,6 +825,20 @@ private: m_send_trans.write_to_socket(client_socket); } + void finalize_content_helper(int client, uint32 context, const String& uuid, String& text, uint32& cursor_pos) { + LOGD("client id:%d\n", client); + + Socket client_socket(client); + m_send_trans.clear(); + m_send_trans.put_command(SCIM_TRANS_CMD_REPLY); + m_send_trans.put_data(context); + m_send_trans.put_data(uuid); + m_send_trans.put_command(ISM_TRANS_CMD_FINALIZE_CONTENT); + m_send_trans.put_data(text); + m_send_trans.put_data(cursor_pos); + m_send_trans.write_to_socket(client_socket); + } + bool process_key_event(int client, uint32 context, const String& uuid, KeyEvent& key, uint32 serial) { LOGD ("client id:%d\n", client); diff --git a/ism/modules/panelagent/wayland/isf_wsc_control.cpp b/ism/modules/panelagent/wayland/isf_wsc_control.cpp index 72d05790..aa2bf34c 100644 --- a/ism/modules/panelagent/wayland/isf_wsc_control.cpp +++ b/ism/modules/panelagent/wayland/isf_wsc_control.cpp @@ -224,6 +224,12 @@ int _isf_wsc_context_input_panel_mime_type_accept_set (int context, const char * g_info_manager->set_ise_mime_type (get_panel_client_id (), String (mime_type)); return 0; } + +int _isf_wsc_context_input_panel_finalize_content (int context, const char *text, int cursor_pos) +{ + g_info_manager->finalize_content (get_panel_client_id (), String (text), cursor_pos); + return 0; +} /* vi:ts=4:expandtab:nowrap */ diff --git a/ism/modules/panelagent/wayland/isf_wsc_control.h b/ism/modules/panelagent/wayland/isf_wsc_control.h index 61926830..f127e266 100644 --- a/ism/modules/panelagent/wayland/isf_wsc_control.h +++ b/ism/modules/panelagent/wayland/isf_wsc_control.h @@ -66,6 +66,7 @@ extern "C" int _isf_wsc_context_process_input_device_event(int context, int type, const void* data, int len); int _isf_wsc_context_input_panel_prediction_hint_set (int context, const char *prediction_hint); int _isf_wsc_context_input_panel_mime_type_accept_set (int context, const char *mime_type); + int _isf_wsc_context_input_panel_finalize_content (int context, const char *text, int cursor_pos); #ifdef __cplusplus } diff --git a/ism/modules/panelagent/wayland/isf_wsc_control_ui.cpp b/ism/modules/panelagent/wayland/isf_wsc_control_ui.cpp index 2ea5b149..97430238 100644 --- a/ism/modules/panelagent/wayland/isf_wsc_control_ui.cpp +++ b/ism/modules/panelagent/wayland/isf_wsc_control_ui.cpp @@ -303,3 +303,8 @@ void isf_wsc_context_input_panel_mime_type_accept_set (WSCContextISF *ctx, const { _isf_wsc_context_input_panel_mime_type_accept_set (_get_context_id(ctx), mime_type); } + +void isf_wsc_context_input_panel_finalize_content (WSCContextISF *ctx, const char *text, int cursor_pos) +{ + _isf_wsc_context_input_panel_finalize_content (_get_context_id(ctx), text, cursor_pos); +} diff --git a/ism/modules/panelagent/wayland/isf_wsc_control_ui.h b/ism/modules/panelagent/wayland/isf_wsc_control_ui.h index 5a742f78..21062b28 100644 --- a/ism/modules/panelagent/wayland/isf_wsc_control_ui.h +++ b/ism/modules/panelagent/wayland/isf_wsc_control_ui.h @@ -56,6 +56,7 @@ extern "C" void isf_wsc_context_process_input_device_event (WSCContextISF *ctx, uint32_t type, const char *data, uint32_t len); void isf_wsc_context_input_panel_prediction_hint_set (WSCContextISF *ctx, const char *prediction_hint); void isf_wsc_context_input_panel_mime_type_accept_set (WSCContextISF *ctx, const char *mime_type); + void isf_wsc_context_input_panel_finalize_content (WSCContextISF *ctx, const char *text, int cursor_pos); #ifdef __cplusplus } diff --git a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp index 2abd7c74..959e4092 100644 --- a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp +++ b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp @@ -492,6 +492,17 @@ _wsc_im_ctx_mime_type (void *data, struct wl_input_method_context *im_ctx, const isf_wsc_context_input_panel_mime_type_accept_set (wsc_ctx, mime_type); } +static void +_wsc_im_ctx_finalized_content (void *data, struct wl_input_method_context *im_ctx, const char *text, uint32_t cursor_pos) +{ + WSCContextISF *wsc_ctx = (WSCContextISF*)data; + + SECURE_LOGD ("im_context = %p, text = %s, cursor_pos = %d\n", im_ctx, text, cursor_pos); + if (!wsc_ctx) return; + + isf_wsc_context_input_panel_finalize_content (wsc_ctx, text, cursor_pos); +} + static const struct wl_input_method_context_listener wsc_im_context_listener = { _wsc_im_ctx_reset, _wsc_im_ctx_content_type, @@ -507,7 +518,8 @@ static const struct wl_input_method_context_listener wsc_im_context_listener = { _wsc_im_ctx_filter_key_event, _wsc_im_ctx_capital_mode, _wsc_im_ctx_prediction_hint, - _wsc_im_ctx_mime_type + _wsc_im_ctx_mime_type, + _wsc_im_ctx_finalized_content }; #if ENABLE_GRAB_KEYBOARD |