evas_callbacks: fix emission of EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED
authorHosang Kim <hosang12.kim@samsung.com>
Wed, 3 Apr 2019 13:26:50 +0000 (09:26 -0400)
committerWonki Kim <wonki_.kim@samsung.com>
Mon, 8 Apr 2019 01:49:02 +0000 (10:49 +0900)
Summary:
When I add "efl_event_callback_add(btn, EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, _cb, NULL)",
_cb is not called. Because of callback_mask is not set correctly.

Test Plan: unit test

Reviewers: zmike, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8528

src/Makefile_Elementary.am
src/lib/evas/canvas/evas_callbacks.c
src/tests/elementary/efl_ui_suite.c
src/tests/elementary/efl_ui_suite.h
src/tests/elementary/efl_ui_test_callback.c [new file with mode: 0644]
src/tests/elementary/meson.build

index eb540df35ba77d76c1b25370542c6ff2fd0eb346..9ec6f1ebad555debae300eeb45f187fdbcc8c3ca 100644 (file)
@@ -2005,6 +2005,7 @@ tests_elementary_efl_ui_suite_SOURCES = \
        tests/elementary/efl_ui_build.c \
        tests/elementary/elm_test_init.c \
        tests/elementary/efl_ui_test_atspi.c \
+       tests/elementary/efl_ui_test_callback.c \
        tests/elementary/efl_ui_test_focus_common.c \
        tests/elementary/efl_ui_test_focus_common.h \
        tests/elementary/efl_ui_test_focus.c \
index f5dbb15353258860b8bc95ac1ccc7ec7a44cfe6f..dcd3338dd6567073469fdfb8dd334dbc4a414832 100644 (file)
@@ -831,6 +831,11 @@ _check_event_catcher_add(void *data, const Efl_Event *event)
           {
              obj->callback_mask |= (((uint64_t)1) << type);
           }
+        else if (array[i].desc == EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED)
+          {
+             obj->callback_mask |= (((uint64_t)1) << EVAS_CALLBACK_SHOW);
+             obj->callback_mask |= (((uint64_t)1) << EVAS_CALLBACK_HIDE);
+          }
      }
 }
 
index 097f432e8abbc5ba8f9978af5d7d79dd2d344369..a1ba34f1f4ec638233bc5bfd0811f974d31711e6 100644 (file)
@@ -10,6 +10,7 @@ static const Efl_Test_Case etc[] = {
   //{ "elm_focus_sub", elm_test_focus_sub},
   //{ "elm_widget_focus", elm_test_widget_focus},
   { "efl_ui_atspi", efl_ui_test_atspi},
+  { "efl_ui_callback", efl_ui_test_callback},
   { "efl_ui_focus", efl_ui_test_focus},
   { "efl_ui_focus_sub", efl_ui_test_focus_sub},
   { "efl_ui_box", efl_ui_test_box},
index 3755a0e56f5693f629dd392f0aaa38b4e34c3e67..5282949eb50897bec99dc00a533ca3d23c1351f0 100644 (file)
@@ -29,6 +29,7 @@ void efl_ui_test_atspi(TCase *tc);
 void efl_ui_test_image_zoomable(TCase *tc);
 void efl_ui_test_layout(TCase *tc);
 void efl_ui_test_image(TCase *tc);
+void efl_ui_test_callback(TCase *tc);
 
 void efl_ui_test_focus(TCase *tc);
 void efl_ui_test_focus_sub(TCase *tc);
diff --git a/src/tests/elementary/efl_ui_test_callback.c b/src/tests/elementary/efl_ui_test_callback.c
new file mode 100644 (file)
index 0000000..7623049
--- /dev/null
@@ -0,0 +1,53 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Efl_Ui.h>
+#include <Elementary.h>
+#include "elm_suite.h"
+
+static Eo *win;
+
+static void
+callback_setup()
+{
+   win = win_add();
+
+   efl_gfx_entity_size_set(win, EINA_SIZE2D(500, 50));
+}
+
+static void
+_btn_visibility_change(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   Eina_Bool *flag = data;
+   Eina_Bool *visible = ev->info;
+
+   if (!(*visible))
+     *flag = EINA_TRUE;
+}
+
+static void
+callback_timer_cb(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   ck_assert(0);
+   efl_del(event->object);
+   ecore_main_loop_quit();
+}
+
+EFL_START_TEST(efl_ui_callback_visibility)
+{
+   Eina_Bool check = EINA_FALSE;
+   Eo *box = efl_add(EFL_UI_BOX_CLASS, win,
+                 efl_content_set(win, efl_added));
+   efl_event_callback_add(box, EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, _btn_visibility_change, &check);
+   efl_gfx_entity_visible_set(box, EINA_FALSE);
+
+   ck_assert_int_eq(check, EINA_TRUE);
+}
+EFL_END_TEST
+
+void efl_ui_test_callback(TCase *tc)
+{
+   tcase_add_checked_fixture(tc, callback_setup, NULL);
+   tcase_add_test(tc, efl_ui_callback_visibility);
+}
index 987913aef2e2b23f0319dbd65bd906fc9a1f9248..51120beca8fb68b70fc1908c068ed59249a7c076 100644 (file)
@@ -120,6 +120,7 @@ efl_ui_suite_src = [
   'suite_helpers.h',
   'elm_test_init.c',
   'efl_ui_test_atspi.c',
+  'efl_ui_test_callback.c',
   'efl_ui_test_focus_common.c',
   'efl_ui_test_focus_common.h',
   'efl_ui_test_focus.c',