woohyun pushed a commit to branch master.

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

commit 7c71dc4e2df2ac74f121598da44ea872c0a6eaa2
Author: Ali Alzyod <[email protected]>
Date:   Fri Dec 27 10:17:17 2019 +0900

    efl.ui.textbox: fix crash when toggle scroll mode
    
    Reviewers: eagleeye, bu5hm4n, cedric, woohyun
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D10924
---
 src/lib/elementary/efl_ui_textbox.c     |  5 ++++-
 src/tests/elementary/efl_ui_test_text.c | 22 ++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_textbox.c 
b/src/lib/elementary/efl_ui_textbox.c
index ed9c4b365f..e96842dba7 100644
--- a/src/lib/elementary/efl_ui_textbox.c
+++ b/src/lib/elementary/efl_ui_textbox.c
@@ -2451,7 +2451,10 @@ _efl_ui_textbox_scrollable_set(Eo *obj EINA_UNUSED, 
Efl_Ui_Textbox_Data *sd, Ein
      }
    else
      {
-        efl_content_set(sd->scroller, NULL);
+        /* sd->text_table should not be deleted, so we need to use 
content_unset
+         * instead of efl_content_set(sd->scroller, NULL)
+        */
+        efl_content_unset(sd->scroller);
         edje_object_part_swallow(sd->entry_edje, "efl.text", sd->text_table);
         efl_del(sd->scroller);
         sd->scroller = NULL;
diff --git a/src/tests/elementary/efl_ui_test_text.c 
b/src/tests/elementary/efl_ui_test_text.c
index b0eecd14ae..5c26e6f528 100644
--- a/src/tests/elementary/efl_ui_test_text.c
+++ b/src/tests/elementary/efl_ui_test_text.c
@@ -132,10 +132,32 @@ EFL_START_TEST(text_user_change)
 }
 EFL_END_TEST
 
+EFL_START_TEST(text_scroll_mode)
+{
+   Eo *txt, *win, *cur;
+   win = win_add();
+   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
+   cur = efl_text_interactive_main_cursor_get(txt);
+   efl_text_set(txt, "Hello");
+   /*scroll mode is false by default*/
+   fail_if(efl_ui_textbox_scrollable_get(txt));
+   efl_ui_textbox_scrollable_set(txt, !efl_ui_textbox_scrollable_get(txt));
+   efl_text_cursor_text_insert(cur, "World");
+   fail_if(!efl_ui_textbox_scrollable_get(txt));
+   efl_ui_textbox_scrollable_set(txt, !efl_ui_textbox_scrollable_get(txt));
+   efl_text_cursor_text_insert(cur, "!!!");
+
+   ck_assert_str_eq(efl_text_get(txt),"HelloWorld!!!");
+   efl_del(txt);
+   efl_del(win);
+}
+EFL_END_TEST
+
 void efl_ui_test_text(TCase *tc)
 {
    tcase_add_test(tc, text_cnp);
    tcase_add_test(tc, text_all_select_all_unselect);
    tcase_add_test(tc, text_selection);
    tcase_add_test(tc, text_user_change);
+   tcase_add_test(tc, text_scroll_mode);
 }

-- 


Reply via email to