bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a95a509cfd9dbccefe360efa3ff4b717b24adb3e

commit a95a509cfd9dbccefe360efa3ff4b717b24adb3e
Author: Ali Alzyod <[email protected]>
Date:   Sun Dec 29 09:49:04 2019 +0000

    efl.text.interactive: remove event freeze when keyboard button is pressed
    
    this event freeze will prevent submission of EFL_UI_TEXTBOX_EVENT_CHANGED 
on efl.ui.textbox object, when inserting text using the keyboard.
    
    Reviewed-by: Marcel Hollerbach <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D10979
---
 .../elementary/efl_ui_internal_text_interactive.c  |  2 --
 src/tests/elementary/efl_ui_test_text.c            | 26 ++++++++++++++++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/efl_ui_internal_text_interactive.c 
b/src/lib/elementary/efl_ui_internal_text_interactive.c
index 2bb112f265..4958a83582 100644
--- a/src/lib/elementary/efl_ui_internal_text_interactive.c
+++ b/src/lib/elementary/efl_ui_internal_text_interactive.c
@@ -1459,9 +1459,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, 
Evas_Object *obj, void
              info.position = efl_text_cursor_position_get(cur);
              info.length = eina_unicode_utf8_get_len(string);
 
-             efl_event_freeze(obj);
              efl_text_cursor_text_insert(cur, string);
-             efl_event_thaw(obj);
              changed_user = EINA_TRUE;
 
              ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
diff --git a/src/tests/elementary/efl_ui_test_text.c 
b/src/tests/elementary/efl_ui_test_text.c
index 5c26e6f528..49ba50d91d 100644
--- a/src/tests/elementary/efl_ui_test_text.c
+++ b/src/tests/elementary/efl_ui_test_text.c
@@ -5,6 +5,7 @@
 #define EFL_LAYOUT_CALC_PROTECTED
 #include <Efl_Ui.h>
 #include "efl_ui_suite.h"
+#include "Evas_Legacy.h"
 
 static void
 increment_int_changed(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
@@ -153,6 +154,30 @@ EFL_START_TEST(text_scroll_mode)
 }
 EFL_END_TEST
 
+EFL_START_TEST(text_change_event)
+{
+   Eo *txt;
+   Eo *win = win_add();
+
+   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
+   efl_gfx_entity_size_set(txt, EINA_SIZE2D(300, 300));
+   efl_text_set(txt, "Hello");
+   int i_changed = 0;
+   efl_event_callback_add(txt, EFL_UI_TEXTBOX_EVENT_CHANGED, 
increment_int_changed, &i_changed);
+   efl_gfx_entity_visible_set(txt, EINA_TRUE);
+   Evas *e = evas_object_evas_get(txt);
+   efl_ui_focus_util_focus(txt);
+   evas_event_feed_key_down(e, "s", "s", "s", "s", time(NULL), NULL);
+   ecore_main_loop_iterate();
+   ck_assert_str_eq(efl_text_get(txt),"Hellos");
+   ck_assert_int_eq(i_changed,1);
+   ecore_main_loop_iterate();
+
+   efl_del(txt);
+   efl_del(win);
+}
+EFL_END_TEST
+
 void efl_ui_test_text(TCase *tc)
 {
    tcase_add_test(tc, text_cnp);
@@ -160,4 +185,5 @@ void efl_ui_test_text(TCase *tc)
    tcase_add_test(tc, text_selection);
    tcase_add_test(tc, text_user_change);
    tcase_add_test(tc, text_scroll_mode);
+   tcase_add_test(tc, text_change_event);
 }

-- 


Reply via email to