From 63254f8cf0e216fcfa70a4484f54bca331871029 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 4 Jan 2018 08:25:38 +0900 Subject: [PATCH 01/16] Update package version to 0.3.1 Change-Id: Ifa38ebff793d7b0e0ef1543b686419858d48e465 Signed-off-by: Jihoon Kim --- packaging/e-mod-tizen-wl-textinput.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index 7a69a00..cbacfdf 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -1,7 +1,7 @@ %bcond_with wayland Name: e-mod-tizen-wl-textinput Summary: The Enlightenment WM Wayland Text Input Module for Tizen -Version: 0.2.20 +Version: 0.3.1 Release: 1 Group: Graphics & UI Framework/Other License: BSD-2-Clause and MIT -- 2.7.4 From d649b3f8ae884facea5a0907ea7f2c0b692cdd56 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Tue, 9 Jan 2018 19:07:56 +0900 Subject: [PATCH 02/16] Remove unused code Change-Id: I8109ced33b9117a752e286956f0ee346947d2ef1 --- configure.ac | 1 - packaging/e-mod-tizen-wl-textinput.spec | 1 - src/Makefile.am | 4 ++-- src/e_mod_main.c | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 2f84730..a803067 100644 --- a/configure.ac +++ b/configure.ac @@ -32,7 +32,6 @@ PKG_CHECK_MODULES(ENLIGHTENMENT, [enlightenment]) PKG_CHECK_MODULES(ECORE, [ecore]) PKG_CHECK_MODULES(EINA, [eina]) PKG_CHECK_MODULES(EEZE, [eeze]) -PKG_CHECK_MODULES(ECORE_WAYLAND, [ecore-wayland]) PKG_CHECK_MODULES(VCONF, [vconf]) PKG_CHECK_MODULES(DLOG, [dlog]) PKG_CHECK_MODULES(CAPI_SYSTEM_INFO, [capi-system-info]) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index cbacfdf..9625c92 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -13,7 +13,6 @@ BuildRequires: pkgconfig(enlightenment) BuildRequires: pkgconfig(ecore) BuildRequires: pkgconfig(eina) BuildRequires: pkgconfig(eeze) -BuildRequires: pkgconfig(ecore-wayland) BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(capi-system-info) diff --git a/src/Makefile.am b/src/Makefile.am index 7acaf9c..1d6c388 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,6 +10,6 @@ module_la_SOURCES = e_mod_main.c \ e_mod_input_panel.c \ wti_log.c module_la_LIBADD = -module_la_CFLAGS = @WAYLAND_CFLAGS@ @ENLIGHTENMENT_CFLAGS@ @ECORE_WAYLAND_CFLAGS@ @EEZE_CFLAGS@ @ECORE_CFLAGS@ @EINA_CFLAGS@ @VCONF_CFLAGS@ @CAPI_SYSTEM_INFO_CFLAGS@ -DHAVE_WAYLAND_ONLY -DHAVE_WAYLAND -module_la_LDFLAGS = -module -avoid-version @WAYLAND_LIBS@ @ENLIGHTENMENT_LIBS@ @ECORE_WAYLAND_LIBS@ @EEZE_LIBS@ @ECORE_LIBS@ @EINA_LIBS@ @VCONF_LIBS@ @CAPI_SYSTEM_INFO_LIBS@ +module_la_CFLAGS = @WAYLAND_CFLAGS@ @ENLIGHTENMENT_CFLAGS@ @EEZE_CFLAGS@ @ECORE_CFLAGS@ @EINA_CFLAGS@ @VCONF_CFLAGS@ @CAPI_SYSTEM_INFO_CFLAGS@ -DHAVE_WAYLAND_ONLY -DHAVE_WAYLAND +module_la_LDFLAGS = -module -avoid-version @WAYLAND_LIBS@ @ENLIGHTENMENT_LIBS@ @EEZE_LIBS@ @ECORE_LIBS@ @EINA_LIBS@ @VCONF_LIBS@ @CAPI_SYSTEM_INFO_LIBS@ module_la_DEPENDENCIES = $(top_builddir)/config.h diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 17dee86..5d0e149 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include -- 2.7.4 From fd47ed87eed5993ea4d0877305aa23c50685db35 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Tue, 9 Jan 2018 19:16:19 +0900 Subject: [PATCH 03/16] Update package version to 0.3.2 Change-Id: I0a469816995dabadf1733dbf75f9f7e237ab23e3 Signed-off-by: Jihoon Kim --- packaging/e-mod-tizen-wl-textinput.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index 9625c92..467be10 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -1,7 +1,7 @@ %bcond_with wayland Name: e-mod-tizen-wl-textinput Summary: The Enlightenment WM Wayland Text Input Module for Tizen -Version: 0.3.1 +Version: 0.3.2 Release: 1 Group: Graphics & UI Framework/Other License: BSD-2-Clause and MIT -- 2.7.4 From 4a7cfc1a780aa547b604d690a8a89755b958666a Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Tue, 6 Feb 2018 15:50:58 +0900 Subject: [PATCH 04/16] Revert "Added hotkey support" This reverts commit 3bb53cbf4a129959e435ae25811f6594398bb580. Conflicts: src/e_mod_main.c Change-Id: Ia484f9fd171bbed6852827898d1ddfc157f8eb88 --- src/e_mod_main.c | 80 ++------------------------------------------------------ 1 file changed, 2 insertions(+), 78 deletions(-) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 5d0e149..7a4a3ab 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -114,14 +114,6 @@ struct _E_Mod_Text_Input_Shutdown_Cb void *data; }; -struct _E_Input_Method_Keymap_Info -{ - const char *language; - const char *rules; - const char *models; - const char *layout; -}; - /* This represents the overall input panel's state including the candidate area */ enum _E_Input_Panel_State { @@ -140,8 +132,6 @@ static Eeze_Udev_Watch *eeze_udev_watch_hander = NULL; static Ecore_Event_Handler *ecore_key_down_handler = NULL; static Eina_List *handlers = NULL; static uint32_t g_text_input_count = 1; -static uint32_t g_keymap_index = 0; -static Eina_Bool g_keyboard_mode_engligh = EINA_TRUE; static Ecore_Timer *g_timer_will_hide = NULL; static enum _E_Input_Panel_State g_input_panel_state = E_INPUT_PANEL_STATE_DID_HIDE; static E_Client *client_surface_ec = NULL; @@ -167,11 +157,6 @@ const int WILL_HIDE_TIMER_INTERVAL = 1.0f; } \ while (0) -static struct _E_Input_Method_Keymap_Info g_keymap_info[] = { - {"en_US", "evdev", "pc105", "us"}, - {"ru_RU", "evdev", "pc105", "ru"}, -}; - static void _e_text_input_cb_input_panel_show(struct wl_client *client, struct wl_resource *resource); static void _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method, Eina_Bool need_focus_in); static Eina_Bool _e_text_input_method_create_context(struct wl_client *client, E_Input_Method *input_method, E_Text_Input *text_input, Eina_Bool need_focus_out); @@ -347,34 +332,6 @@ _keyboard_mode_changed_cb(keynode_t *key, void* data) } } -static void -_display_language_changed_cb(keynode_t *key, void* data) -{ - int loop; - char *language = vconf_keynode_get_str(key); - LOGD("language : %s\n", language); - - /* Just in case we did not find any matching language string */ - g_keymap_index = 0; - if (language) - { - for (loop = 0; loop < sizeof(g_keymap_info) / sizeof(struct _E_Input_Method_Keymap_Info); loop++) - { - if (strncmp(language, g_keymap_info[loop].language, strlen(g_keymap_info[loop].language)) == 0) - { - g_keymap_index = loop; - } - } - } - /* We do not want to change the current keymap related behavior in TV profile for now */ - if (!_TV) - { - /* Resetting the H/W keyboard language mode to English, would be more appropriate when the - * display language gets changed, such as the cases like changing from French to Russian, for example */ - e_comp_wl_input_keymap_set(g_keymap_info[0].rules, g_keymap_info[0].models, g_keymap_info[0].layout, NULL, NULL, NULL, NULL); - } - g_keyboard_mode_engligh = EINA_TRUE; -} #if ENABLE_GRAB_KEYBOARD static void @@ -438,40 +395,12 @@ _e_text_input_method_context_key_send(E_Input_Method_Context *context, unsigned } static Eina_Bool -_e_text_input_method_context_filter_hotkeys(E_Input_Method_Context *context, Ecore_Event_Key *ev) -{ - if (!ev) return EINA_FALSE; - if (!context) return EINA_FALSE; - - /* We do not want to change the current keymap related behavior in TV profile for now */ - if (!_TV) - { - const char *keyname_space = "space"; - if ((strncmp(ev->keyname, keyname_space, strlen(keyname_space)) == 0) && (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)) - { - int keymap_index; - keymap_index = g_keyboard_mode_engligh ? g_keymap_index : 0; - e_comp_wl_input_keymap_set(g_keymap_info[keymap_index].rules, g_keymap_info[keymap_index].models, g_keymap_info[keymap_index].layout, NULL, NULL, NULL, NULL); - wl_keyboard_send_keymap(context->kbd.resource, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, - e_comp_wl->xkb.fd, e_comp_wl->xkb.size); - g_keyboard_mode_engligh = !g_keyboard_mode_engligh; - - return EINA_TRUE; - } - } - return EINA_FALSE; -} - -static Eina_Bool _e_text_input_method_context_ecore_cb_key_down(void *data, int ev_type EINA_UNUSED, Ecore_Event_Key *ev) { E_Input_Method_Context *context = data; - if (!_e_text_input_method_context_filter_hotkeys(context, ev)) - { - _e_text_input_method_context_key_send(context, ev->keycode, ev->timestamp, - WL_KEYBOARD_KEY_STATE_PRESSED); - } + _e_text_input_method_context_key_send(context, ev->keycode, ev->timestamp, + WL_KEYBOARD_KEY_STATE_PRESSED); return ECORE_CALLBACK_RENEW; } @@ -2458,10 +2387,6 @@ e_modapi_init(E_Module *m) E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_RESIZE, _e_text_input_method_context_cb_client_resize, NULL); vconf_notify_key_changed(VCONFKEY_ISF_HW_KEYBOARD_INPUT_DETECTED, _keyboard_mode_changed_cb, NULL); - vconf_notify_key_changed(VCONFKEY_LANGSET, _display_language_changed_cb, NULL); - - /* Find the current display language when initializing */ - _display_language_changed_cb(NULL, NULL); eeze_udev_watch_hander = eeze_udev_watch_add(EEZE_UDEV_TYPE_KEYBOARD, EEZE_UDEV_EVENT_REMOVE, @@ -2491,7 +2416,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED) } vconf_ignore_key_changed(VCONFKEY_ISF_HW_KEYBOARD_INPUT_DETECTED, _keyboard_mode_changed_cb); - vconf_ignore_key_changed(VCONFKEY_LANGSET, _display_language_changed_cb); if (eeze_udev_watch_hander) { -- 2.7.4 From 024155027b0a231ba8827dd4e993db33b7f2b8cc Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Wed, 7 Feb 2018 08:50:05 +0900 Subject: [PATCH 05/16] Update package version to 0.3.3 Change-Id: Ib9031ed2ab6837848e7f69fe0d7c35565607e6b4 Signed-off-by: Jihoon Kim --- packaging/e-mod-tizen-wl-textinput.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index 467be10..7ea68da 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -1,7 +1,7 @@ %bcond_with wayland Name: e-mod-tizen-wl-textinput Summary: The Enlightenment WM Wayland Text Input Module for Tizen -Version: 0.3.2 +Version: 0.3.3 Release: 1 Group: Graphics & UI Framework/Other License: BSD-2-Clause and MIT -- 2.7.4 From adb0a29c3782ac1c8eb907ba406f90ab7c866b6d Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Tue, 20 Feb 2018 11:25:17 +0900 Subject: [PATCH 06/16] Fix issue detected by static analysis tool Branch past initialization : If the variable is used after the target, it will be uninitialized. Change-Id: I6d6d32650616b9803829c8954caa5ee5b31ae3cc Signed-off-by: Jihoon Kim --- src/e_mod_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 7a4a3ab..1e73523 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -1229,6 +1229,7 @@ _e_text_input_cb_activate(struct wl_client *client, struct wl_resource *resource E_Input_Method *input_method = NULL; E_Text_Input *old = NULL; E_Input_Method_Context *context = NULL; + E_Client *ec = NULL; EINA_SAFETY_ON_NULL_GOTO(resource, err); EINA_SAFETY_ON_NULL_GOTO(seat, err); @@ -1236,7 +1237,7 @@ _e_text_input_cb_activate(struct wl_client *client, struct wl_resource *resource EINA_SAFETY_ON_NULL_GOTO(g_input_method->resource, err); /* Store application window's E_Client* value for setting transient_for information later */ - E_Client *ec = wl_resource_get_user_data(surface); + ec = wl_resource_get_user_data(surface); EINA_SAFETY_ON_NULL_GOTO(ec, err); EINA_SAFETY_ON_TRUE_GOTO(e_object_is_del(E_OBJECT(ec)), err); client_surface_ec = ec; -- 2.7.4 From 3a2508ea52a30a62d29ea6de257e82835d28d321 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Tue, 20 Feb 2018 17:40:25 +0900 Subject: [PATCH 07/16] Update package version to 0.3.4 Change-Id: Ie60588d256a013544e72ca630c50abdfdb3ba51f Signed-off-by: Jihoon Kim --- packaging/e-mod-tizen-wl-textinput.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index 7ea68da..f97bf88 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -1,7 +1,7 @@ %bcond_with wayland Name: e-mod-tizen-wl-textinput Summary: The Enlightenment WM Wayland Text Input Module for Tizen -Version: 0.3.3 +Version: 0.3.4 Release: 1 Group: Graphics & UI Framework/Other License: BSD-2-Clause and MIT -- 2.7.4 From cd4ca41b7f754da79bf4f0ee1bf37519221677eb Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Wed, 28 Feb 2018 15:05:27 +0900 Subject: [PATCH 08/16] Add timer for checking ready_set retrieval Change-Id: Ie18aa26c228d9a65b0dbdec1e3e018be7a9731a3 --- src/e_mod_input_panel.c | 77 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 7 deletions(-) diff --git a/src/e_mod_input_panel.c b/src/e_mod_input_panel.c index 9afcdc7..45e784e 100644 --- a/src/e_mod_input_panel.c +++ b/src/e_mod_input_panel.c @@ -4,6 +4,7 @@ #include #define WTI_WARNING(resource, code, msg) (_e_input_panel_log_show((resource), (code), (msg), __func__)) +#define WAIT_UPDATE_TIMER_INTERVAL 2.0f typedef struct _E_Input_Panel E_Input_Panel; typedef struct _E_Input_Panel_Surface E_Input_Panel_Surface; @@ -67,6 +68,7 @@ E_Input_Panel *g_input_panel = NULL; E_Input_Panel_Floating_Info *g_floating_info = NULL; Eina_List *handlers = NULL; static Eina_Bool panel_show_need_rerun = EINA_FALSE; +static Ecore_Timer *g_timer_wait_update = NULL; static void _e_input_panel_log_show(struct wl_resource *resource, uint32_t code, const char *msg, const char *warning_msg) @@ -154,25 +156,37 @@ _e_input_panel_surface_cb_overlay_panel_set(struct wl_client *client EINA_UNUSED } static void -_e_input_panel_surface_cb_ready_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t state EINA_UNUSED) +_e_input_panel_surface_show(E_Input_Panel_Surface *ips) { - E_Input_Panel_Surface *ips = wl_resource_get_user_data(resource); + Eina_List *l = NULL; + E_Input_Panel_Surface *surface = NULL; E_Client *focused_ec = NULL; if (!g_input_panel) return; + /* When NULL passed, find the most appropriate surface */ if (!ips) { - WTI_WARNING(resource, - WL_DISPLAY_ERROR_INVALID_OBJECT, - "No Input Panel Surface For Surface"); - return; + EINA_LIST_FOREACH(g_input_panel->surfaces, l, surface) + { + if (surface && surface->ec) + { + if (surface->ec->parent == e_client_focused_get()) + { + ips = surface; + } + } + } } + if (!ips) return; + + LOGD("parent:%p, focus:%p, wait_update %d\n", + ips->ec ? ips->ec->parent : NULL, e_client_focused_get(), g_input_panel->wait_update); + if (g_input_panel->wait_update) { focused_ec = e_client_focused_get(); - LOGD("IPS::SHOW::READY (parent:%p, focus:%p)\n", ips->ec ? ips->ec->parent:NULL, focused_ec); e_input_panel_wait_update_set(EINA_FALSE); if (ips->ec->parent) { @@ -191,6 +205,48 @@ _e_input_panel_surface_cb_ready_set(struct wl_client *client EINA_UNUSED, struct } } +static void _wait_update_timer_del() +{ + if (g_timer_wait_update) + { + LOGD("deleting wait_update timer"); + ecore_timer_del(g_timer_wait_update); + g_timer_wait_update = NULL; + } +} + +static Eina_Bool +_wait_update_timer_handler(void *data) +{ + LOGE("TIMED OUT while waiting for ready_set"); + + _e_input_panel_surface_show(NULL); + + g_timer_wait_update = NULL; + + return ECORE_CALLBACK_CANCEL; +} + +static void +_e_input_panel_surface_cb_ready_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t state EINA_UNUSED) +{ + E_Input_Panel_Surface *ips = wl_resource_get_user_data(resource); + + if (!g_input_panel) return; + + if (!ips) + { + WTI_WARNING(resource, + WL_DISPLAY_ERROR_INVALID_OBJECT, + "No Input Panel Surface For Surface"); + return; + } + + LOGD("IPS::SHOW::READY\n"); + + _e_input_panel_surface_show(ips); +} + static void _e_input_panel_surface_cb_floating_panel_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t state) { @@ -946,6 +1002,8 @@ e_input_panel_visibility_change(Eina_Bool visible) ips->showing = visible; _e_input_panel_surface_visible_update(ips); } + + if (!visible) _wait_update_timer_del(); } Eina_Bool @@ -1136,6 +1194,11 @@ e_input_panel_wait_update_set(Eina_Bool wait_update) /* If we are in wait_update mode, the input panel surfaces have to be updated forcibly */ if (wait_update) { + LOGD("Registering wait_update_timer"); + _wait_update_timer_del(); + g_timer_wait_update = ecore_timer_add(WAIT_UPDATE_TIMER_INTERVAL, + _wait_update_timer_handler, NULL); + EINA_LIST_FOREACH(g_input_panel->surfaces, l, ips) { if (!ips->ec) continue; -- 2.7.4 From a5834bcd598ec06548ec1781efdd90085ca60451 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Tue, 15 May 2018 10:55:16 +0900 Subject: [PATCH 09/16] Update input panel geometry when candidate appears Change-Id: If2bf4b0993435b66141f708f73b34e89fd673b04 --- src/e_mod_main.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 1e73523..3b1dbbb 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -944,7 +944,12 @@ _e_text_input_method_context_cb_update_candidate_state(struct wl_client *client { /* If the candidate state has been changed to ON when panel is not in show state */ if (g_show_state_candidate && !prev_show_state && g_disable_show_panel && g_client && g_text_input) - _e_text_input_cb_input_panel_show(g_client, g_text_input->resource); + { + _e_text_input_cb_input_panel_show(g_client, g_text_input->resource); + int x = 0, y = 0, w = 0, h = 0; + if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h)) + _e_text_input_send_input_panel_geometry(g_text_input->resource, x, y, w, h); + } } } -- 2.7.4 From 6262e40f00e3ad6b63d1b1459e12f4de4d6982b3 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Wed, 1 Aug 2018 17:02:27 +0900 Subject: [PATCH 10/16] Modified not to send invalid IME geometry Change-Id: I4d8361fcbede7c288b2f6dbb7dba0b3dbd5160c1 --- src/e_mod_main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 3b1dbbb..794a487 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -947,7 +947,7 @@ _e_text_input_method_context_cb_update_candidate_state(struct wl_client *client { _e_text_input_cb_input_panel_show(g_client, g_text_input->resource); int x = 0, y = 0, w = 0, h = 0; - if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h)) + if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h) && !(w <= 1 || h <= 1)) _e_text_input_send_input_panel_geometry(g_text_input->resource, x, y, w, h); } } @@ -2313,7 +2313,7 @@ _e_text_input_method_context_cb_client_resize(void *data EINA_UNUSED, int type E if (g_text_input && g_text_input->resource) { - if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h)) + if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h) && !(w <= 1 || h <= 1)) _e_text_input_send_input_panel_geometry(g_text_input->resource, x, y, w, h); } @@ -2362,7 +2362,7 @@ e_text_input_update_input_panel_state(Eina_Bool state) if (!g_updated_geometry) { int x = 0, y = 0, w = 0, h = 0; - if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h)) + if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h) && !(w <= 1 || h <= 1)) _e_text_input_send_input_panel_geometry(text_input->resource, x, y, w, h); g_updated_geometry = EINA_TRUE; } -- 2.7.4 From dfc4fa9feec1b78baf478fb45391effb7d9279f7 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Wed, 1 Aug 2018 17:12:38 +0900 Subject: [PATCH 11/16] Update package version to 0.3.5 Change-Id: I7789732f8c22d33a2d3e13e026f0a65f4cdec1ae --- packaging/e-mod-tizen-wl-textinput.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index f97bf88..8b5d56d 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -1,7 +1,7 @@ %bcond_with wayland Name: e-mod-tizen-wl-textinput Summary: The Enlightenment WM Wayland Text Input Module for Tizen -Version: 0.3.4 +Version: 0.3.5 Release: 1 Group: Graphics & UI Framework/Other License: BSD-2-Clause and MIT -- 2.7.4 From 3c9bfca51b600a109f63a8d90776cf19426679b8 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Tue, 21 Aug 2018 14:03:25 +0900 Subject: [PATCH 12/16] Support reshow_input_panel interface Change-Id: I9d67813d0cf9f982de11fc28261eb9bcd5210546 --- src/e_mod_main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 794a487..23c38f5 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -1078,6 +1078,13 @@ _e_text_input_method_context_cb_update_ise_geometry(struct wl_client *client EIN } } + +static void +_e_text_input_method_context_cb_reshow_input_panel(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + e_input_panel_transient_for_set(client_surface_ec); + e_input_panel_wait_update_set(EINA_TRUE); +} static const struct wl_input_method_context_interface _e_text_input_method_context_implementation = { _e_text_input_method_context_cb_destroy, _e_text_input_method_context_cb_string_commit, @@ -1105,6 +1112,7 @@ static const struct wl_input_method_context_interface _e_text_input_method_conte _e_text_input_method_context_cb_input_panel_event, _e_text_input_method_context_cb_commit_content, _e_text_input_method_context_cb_update_candidate_state, + _e_text_input_method_context_cb_reshow_input_panel, }; static void -- 2.7.4 From c2c0ae74aa0031ad9c5b06cd9690b3e3236f9bb0 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Tue, 21 Aug 2018 16:35:17 +0900 Subject: [PATCH 13/16] Update package version to 0.3.6 Change-Id: I038df54087428a7d10d5ce5093739a6445b84f97 --- packaging/e-mod-tizen-wl-textinput.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index 8b5d56d..ea62d3a 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -1,7 +1,7 @@ %bcond_with wayland Name: e-mod-tizen-wl-textinput Summary: The Enlightenment WM Wayland Text Input Module for Tizen -Version: 0.3.5 +Version: 0.3.6 Release: 1 Group: Graphics & UI Framework/Other License: BSD-2-Clause and MIT -- 2.7.4 From 4165092aa606c20a2ae485cfff0f021a5f5f6938 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Tue, 13 Nov 2018 10:51:07 +0900 Subject: [PATCH 14/16] Delete wait_update timer when showing input panel Change-Id: Ib29c9053a7ebd927fb67227b0a1b2ca6ea045eef --- src/e_mod_input_panel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/e_mod_input_panel.c b/src/e_mod_input_panel.c index 45e784e..c18bfe2 100644 --- a/src/e_mod_input_panel.c +++ b/src/e_mod_input_panel.c @@ -1003,7 +1003,7 @@ e_input_panel_visibility_change(Eina_Bool visible) _e_input_panel_surface_visible_update(ips); } - if (!visible) _wait_update_timer_del(); + _wait_update_timer_del(); } Eina_Bool -- 2.7.4 From 00139a417ffa732c5d4215701148dede9814b02c Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Fri, 16 Nov 2018 08:10:04 +0900 Subject: [PATCH 15/16] Update package version to 0.3.7 Change-Id: I8864192f576dc279d58aa814c9b3f8e15f582bfc Signed-off-by: Jihoon Kim --- packaging/e-mod-tizen-wl-textinput.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-mod-tizen-wl-textinput.spec b/packaging/e-mod-tizen-wl-textinput.spec index ea62d3a..a9dd3b2 100644 --- a/packaging/e-mod-tizen-wl-textinput.spec +++ b/packaging/e-mod-tizen-wl-textinput.spec @@ -1,7 +1,7 @@ %bcond_with wayland Name: e-mod-tizen-wl-textinput Summary: The Enlightenment WM Wayland Text Input Module for Tizen -Version: 0.3.6 +Version: 0.3.7 Release: 1 Group: Graphics & UI Framework/Other License: BSD-2-Clause and MIT -- 2.7.4 From 24d3bb788572fbeea156aeb45df845e59c052346 Mon Sep 17 00:00:00 2001 From: Inhong Han Date: Wed, 5 Dec 2018 14:24:46 +0900 Subject: [PATCH 16/16] Fixed to prevent sending invalid geometry to the app Change-Id: I29150827d0bf5c18ca1de5fc27ba02f9122394d5 --- src/e_mod_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 23c38f5..1258da4 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -2319,7 +2319,7 @@ _e_text_input_method_context_cb_client_resize(void *data EINA_UNUSED, int type E if (!found) return ECORE_CALLBACK_PASS_ON; if ((ec->w < 1) && (ec->h < 1)) return ECORE_CALLBACK_PASS_ON; - if (g_text_input && g_text_input->resource) + if (g_text_input && g_text_input->resource && g_input_panel_state != E_INPUT_PANEL_STATE_WILL_HIDE && g_input_panel_state != E_INPUT_PANEL_STATE_DID_HIDE) { if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h) && !(w <= 1 || h <= 1)) _e_text_input_send_input_panel_geometry(g_text_input->resource, x, y, w, h); -- 2.7.4