diff --git a/src/tests/evas/evas_suite.c b/src/tests/evas/evas_suite.c index d1946cdeb0..5e3d0d5571 100644 --- a/src/tests/evas/evas_suite.c +++ b/src/tests/evas/evas_suite.c @@ -28,6 +28,7 @@ static const Efl_Test_Case etc[] = { { "Evas GL", evas_test_evasgl }, { "Object Smart", evas_test_object_smart }, { "Matrix", evas_test_matrix }, + { "Events", evas_test_events }, { NULL, NULL } }; diff --git a/src/tests/evas/evas_suite.h b/src/tests/evas/evas_suite.h index 3b6b7bf8f9..6fee2236d0 100644 --- a/src/tests/evas/evas_suite.h +++ b/src/tests/evas/evas_suite.h @@ -22,5 +22,6 @@ void evas_test_mask(TCase *tc); void evas_test_evasgl(TCase *tc); void evas_test_object_smart(TCase *tc); void evas_test_matrix(TCase *tc); +void evas_test_events(TCase *tc); #endif /* _EVAS_SUITE_H */ diff --git a/src/tests/evas/evas_test_events.c b/src/tests/evas/evas_test_events.c new file mode 100644 index 0000000000..b01eaaa889 --- /dev/null +++ b/src/tests/evas/evas_test_events.c @@ -0,0 +1,47 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include +#include + +#include "evas_suite.h" +#include "evas_tests_helpers.h" + +static void +_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + intptr_t *val = data; + ck_assert_int_eq(*val, 0); + *val = 1; +} + +EFL_START_TEST(evas_test_events_frozen_mouse_up) +{ + Evas *evas; + Evas_Object *rect; + static int callback_called = 0; + evas = EVAS_TEST_INIT_EVAS(); + rect = evas_object_rectangle_add(evas); + evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, &callback_called); + evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_UP, _mouse_down_cb, &callback_called); + evas_object_resize(rect, 500, 500); + evas_object_show(rect); + + evas_event_feed_mouse_in(evas, 0, NULL); + evas_event_feed_mouse_move(evas, 100, 100, 0, NULL); + evas_event_feed_mouse_down(evas, 1, 0, 0, NULL); + ck_assert_int_eq(callback_called, 1); + callback_called = 0; + evas_object_freeze_events_set(rect, 1); + evas_event_feed_mouse_up(evas, 1, 0, 0, NULL); + ck_assert_int_eq(callback_called, 0); +} +EFL_END_TEST + +void evas_test_events(TCase *tc) +{ + tcase_add_test(tc, evas_test_events_frozen_mouse_up); +} diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build index 627351b2ae..602a9b9f16 100644 --- a/src/tests/evas/meson.build +++ b/src/tests/evas/meson.build @@ -15,6 +15,7 @@ evas_suite_src = [ 'evas_test_evasgl.c', 'evas_test_matrix.c', 'evas_test_focus.c', + 'evas_test_events.c', 'evas_tests_helpers.h', 'evas_suite.h' ]