summaryrefslogtreecommitdiff
path: root/ism/modules
diff options
context:
space:
mode:
authorJi-hoon Lee <dalton.lee@samsung.com>2017-11-01 19:43:42 +0900
committerJi-hoon Lee <dalton.lee@samsung.com>2017-11-07 00:47:39 +0000
commitcb88e3a3227915af50e593194842bfe1aed859d9 (patch)
treecaa7d6087ee68e281a672197671a81bac589aa99 /ism/modules
parentf7fa8e56ff79095e3d41b70d39e364722e11efae (diff)
downloadisf-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')
-rw-r--r--ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp16
-rw-r--r--ism/modules/panelagent/wayland/isf_wsc_control.cpp6
-rw-r--r--ism/modules/panelagent/wayland/isf_wsc_control.h1
-rw-r--r--ism/modules/panelagent/wayland/isf_wsc_control_ui.cpp5
-rw-r--r--ism/modules/panelagent/wayland/isf_wsc_control_ui.h1
-rw-r--r--ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp14
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