summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-08-06 19:55:40 +0200
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2019-08-07 14:48:41 +0200
commit54c524f7f6186bffcfc3059e8268fabf618a9797 (patch)
treefae75187427acf927315dcd8d67b160f54bf1f17
parentf34f92bb29724c8e2c796c9787c2572d29d6619d (diff)
introduce efl_ui_multi_selectable and efl_ui_single_selectable
right now they are just thin wrappers from what have been in efl_ui_collection. This is just a first effort, the interfaces have to be equipped with more and better API, more events, and tests. ref T8057 Reviewed-by: SangHyeon Jade Lee <sh10233.lee@samsung.com> Differential Revision: https://phab.enlightenment.org/D9515
-rw-r--r--src/examples/elementary/efl_ui_list_example_1.c6
-rw-r--r--src/lib/efl/Efl.h1
-rw-r--r--src/lib/efl/interfaces/efl_interfaces_main.c2
-rw-r--r--src/lib/efl/interfaces/meson.build1
-rw-r--r--src/lib/elementary/Efl_Ui.h2
-rw-r--r--src/lib/elementary/efl_ui_collection.c6
-rw-r--r--src/lib/elementary/efl_ui_collection.eo16
-rw-r--r--src/lib/elementary/efl_ui_item.c2
-rw-r--r--src/lib/elementary/efl_ui_multi_selectable.eo (renamed from src/lib/efl/interfaces/efl_ui_multi_selectable.eo)11
-rw-r--r--src/lib/elementary/efl_ui_single_selectable.eo17
-rw-r--r--src/lib/elementary/meson.build2
-rw-r--r--src/tests/elementary/efl_ui_test_collection_common.c208
-rw-r--r--src/tests/elementary/spec/efl_test_multi_selectable.c239
-rw-r--r--src/tests/elementary/spec/efl_test_single_selectable.c56
-rw-r--r--src/tests/elementary/spec/efl_ui_spec_suite.h2
-rw-r--r--src/tests/elementary/spec/meson.build2
16 files changed, 341 insertions, 232 deletions
diff --git a/src/examples/elementary/efl_ui_list_example_1.c b/src/examples/elementary/efl_ui_list_example_1.c
index bb8aa4011f..efac2de088 100644
--- a/src/examples/elementary/efl_ui_list_example_1.c
+++ b/src/examples/elementary/efl_ui_list_example_1.c
@@ -30,7 +30,7 @@ _list_selected(void *data EINA_UNUSED, const Efl_Event *ev)
30 Eo *item = ev->info, *tmp; 30 Eo *item = ev->info, *tmp;
31 printf("list item [%p:%d] is %s\n", item, efl_ui_item_index_get(item), (efl_ui_selectable_selected_get(item)? "selected" : "unselected")); 31 printf("list item [%p:%d] is %s\n", item, efl_ui_item_index_get(item), (efl_ui_selectable_selected_get(item)? "selected" : "unselected"));
32 32
33 Eina_Iterator *selects = efl_ui_collection_selected_items_get(list); 33 Eina_Iterator *selects = efl_ui_selected_items_get(list);
34 34
35 EINA_ITERATOR_FOREACH(selects, tmp) 35 EINA_ITERATOR_FOREACH(selects, tmp)
36 printf("selected [%p:%d] ", tmp, efl_ui_item_index_get(tmp)); 36 printf("selected [%p:%d] ", tmp, efl_ui_item_index_get(tmp));
@@ -82,7 +82,7 @@ _anim_radio_changed(void *data, const Efl_Event *ev EINA_UNUSED)
82static void 82static void
83_scrl_btn_clicked(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) 83_scrl_btn_clicked(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
84{ 84{
85 Efl_Ui_List_Default_Item *item = efl_ui_collection_last_selected_item_get(priv_d.list); 85 Efl_Ui_List_Default_Item *item = efl_ui_single_selectable_last_selected_get(priv_d.list);
86 printf("show [%d:%p] [%d]\n", efl_ui_item_index_get(item), item, priv_d.anim); 86 printf("show [%d:%p] [%d]\n", efl_ui_item_index_get(item), item, priv_d.anim);
87 efl_ui_collection_item_scroll(priv_d.list, item, priv_d.anim); 87 efl_ui_collection_item_scroll(priv_d.list, item, priv_d.anim);
88} 88}
@@ -90,7 +90,7 @@ _scrl_btn_clicked(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
90static void 90static void
91_scrl_align_btn_clicked(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) 91_scrl_align_btn_clicked(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
92{ 92{
93 Efl_Ui_List_Default_Item *item = efl_ui_collection_last_selected_item_get(priv_d.list); 93 Efl_Ui_List_Default_Item *item = efl_ui_single_selectable_last_selected_get(priv_d.list);
94 double align = efl_ui_range_value_get(priv_d.slider); 94 double align = efl_ui_range_value_get(priv_d.slider);
95 printf("show [%d:%p] [%.2lf], [%d]\n", efl_ui_item_index_get(item), item, align, priv_d.anim); 95 printf("show [%d:%p] [%.2lf], [%d]\n", efl_ui_item_index_get(item), item, align, priv_d.anim);
96 efl_ui_collection_item_scroll_align(priv_d.list, item, align, priv_d.anim); 96 efl_ui_collection_item_scroll_align(priv_d.list, item, align, priv_d.anim);
diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
index c1c934f6b0..a75b683b52 100644
--- a/src/lib/efl/Efl.h
+++ b/src/lib/efl/Efl.h
@@ -109,7 +109,6 @@ typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command;
109#include "interfaces/efl_ui_scrollable_interactive.eo.h" 109#include "interfaces/efl_ui_scrollable_interactive.eo.h"
110#include "interfaces/efl_ui_text_selectable.eo.h" 110#include "interfaces/efl_ui_text_selectable.eo.h"
111#include "interfaces/efl_ui_container_selectable.eo.h" 111#include "interfaces/efl_ui_container_selectable.eo.h"
112#include "interfaces/efl_ui_multi_selectable.eo.h"
113#include "interfaces/efl_ui_zoom.eo.h" 112#include "interfaces/efl_ui_zoom.eo.h"
114 113
115#include "interfaces/efl_screen.eo.h" 114#include "interfaces/efl_screen.eo.h"
diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c b/src/lib/efl/interfaces/efl_interfaces_main.c
index 141a2904a7..47c143c120 100644
--- a/src/lib/efl/interfaces/efl_interfaces_main.c
+++ b/src/lib/efl/interfaces/efl_interfaces_main.c
@@ -77,7 +77,7 @@
77#include "interfaces/efl_ui_scrollbar.eo.c" 77#include "interfaces/efl_ui_scrollbar.eo.c"
78#include "interfaces/efl_ui_container_selectable.eo.c" 78#include "interfaces/efl_ui_container_selectable.eo.c"
79#include "interfaces/efl_ui_text_selectable.eo.c" 79#include "interfaces/efl_ui_text_selectable.eo.c"
80#include "interfaces/efl_ui_multi_selectable.eo.c" 80
81#include "interfaces/efl_ui_zoom.eo.c" 81#include "interfaces/efl_ui_zoom.eo.c"
82 82
83#include "interfaces/efl_cached_item.eo.c" 83#include "interfaces/efl_cached_item.eo.c"
diff --git a/src/lib/efl/interfaces/meson.build b/src/lib/efl/interfaces/meson.build
index 7467882665..992915c69e 100644
--- a/src/lib/efl/interfaces/meson.build
+++ b/src/lib/efl/interfaces/meson.build
@@ -84,7 +84,6 @@ pub_eo_files = [
84 'efl_ui_property_bind.eo', 84 'efl_ui_property_bind.eo',
85 'efl_ui_factory.eo', 85 'efl_ui_factory.eo',
86 'efl_ui_factory_bind.eo', 86 'efl_ui_factory_bind.eo',
87 'efl_ui_multi_selectable.eo',
88 'efl_screen.eo', 87 'efl_screen.eo',
89 'efl_io_closer.eo', 88 'efl_io_closer.eo',
90 'efl_io_positioner.eo', 89 'efl_io_positioner.eo',
diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h
index a54ee690fa..9683ee74d0 100644
--- a/src/lib/elementary/Efl_Ui.h
+++ b/src/lib/elementary/Efl_Ui.h
@@ -260,6 +260,8 @@ typedef Eo Efl_Ui_Spotlight_Indicator;
260# include <efl_ui_grid_default_item.eo.h> 260# include <efl_ui_grid_default_item.eo.h>
261# include <efl_ui_list_placeholder_item.eo.h> 261# include <efl_ui_list_placeholder_item.eo.h>
262# include <efl_ui_selectable.eo.h> 262# include <efl_ui_selectable.eo.h>
263# include <efl_ui_single_selectable.eo.h>
264# include <efl_ui_multi_selectable.eo.h>
263# include <efl_ui_popup.eo.h> 265# include <efl_ui_popup.eo.h>
264# include <efl_ui_alert_popup.eo.h> 266# include <efl_ui_alert_popup.eo.h>
265# include <efl_ui_scroll_alert_popup.eo.h> 267# include <efl_ui_scroll_alert_popup.eo.h>
diff --git a/src/lib/elementary/efl_ui_collection.c b/src/lib/elementary/efl_ui_collection.c
index f1c5b568c3..1889067a5e 100644
--- a/src/lib/elementary/efl_ui_collection.c
+++ b/src/lib/elementary/efl_ui_collection.c
@@ -251,14 +251,14 @@ _efl_ui_collection_item_scroll_align(Eo *obj, Efl_Ui_Collection_Data *pd, Efl_Ui
251 _item_scroll_internal(obj, pd, item, align, animation); 251 _item_scroll_internal(obj, pd, item, align, animation);
252} 252}
253 253
254EOLIAN static Efl_Ui_Item* 254EOLIAN static Efl_Ui_Selectable*
255_efl_ui_collection_last_selected_item_get(const Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd) 255_efl_ui_collection_efl_ui_single_selectable_last_selected_get(const Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd)
256{ 256{
257 return eina_list_last_data_get(pd->selected); 257 return eina_list_last_data_get(pd->selected);
258} 258}
259 259
260EOLIAN static Eina_Iterator* 260EOLIAN static Eina_Iterator*
261_efl_ui_collection_selected_items_get(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd) 261_efl_ui_collection_efl_ui_multi_selectable_selected_items_get(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd)
262{ 262{
263 return eina_list_iterator_new(pd->selected); 263 return eina_list_iterator_new(pd->selected);
264} 264}
diff --git a/src/lib/elementary/efl_ui_collection.eo b/src/lib/elementary/efl_ui_collection.eo
index 679ef39062..a3e302e320 100644
--- a/src/lib/elementary/efl_ui_collection.eo
+++ b/src/lib/elementary/efl_ui_collection.eo
@@ -32,18 +32,6 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
32 @in animation: bool; [[If you want to have an animation or not.]] 32 @in animation: bool; [[If you want to have an animation or not.]]
33 } 33 }
34 } 34 }
35 @property last_selected_item {
36 [[The item that was selected most recently.
37 ]]
38 get {}
39 values {
40 item: Efl.Ui.Item; [[The latest selected item.]]
41 }
42 }
43 selected_items_get {
44 [[Get the selected items iterator. The iterator sequence will be decided by selection.]]
45 return: iterator<Efl.Ui.Item> @owned @no_unused; [[User has to free the iterator after usage.]]
46 }
47 @property position_manager { 35 @property position_manager {
48 [[Position manager object that handles placement of items.]] 36 [[Position manager object that handles placement of items.]]
49 values { 37 values {
@@ -73,10 +61,12 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
73 Efl.Pack_Linear.pack_index_get; 61 Efl.Pack_Linear.pack_index_get;
74 Efl.Pack_Linear.pack_content_get; 62 Efl.Pack_Linear.pack_content_get;
75 Efl.Ui.Scrollable_Interactive.match_content { set; } 63 Efl.Ui.Scrollable_Interactive.match_content { set; }
76 Efl.Ui.Multi_Selectable.select_mode {get; set;}
77 Efl.Ui.Widget_Focus_Manager.focus_manager_create; 64 Efl.Ui.Widget_Focus_Manager.focus_manager_create;
78 Efl.Ui.Widget.focus_state_apply; 65 Efl.Ui.Widget.focus_state_apply;
79 Efl.Ui.Focus.Manager.move; 66 Efl.Ui.Focus.Manager.move;
67 Efl.Ui.Single_Selectable.last_selected { get; }
68 Efl.Ui.Multi_Selectable.selected_items_get;
69 Efl.Ui.Multi_Selectable.select_mode {get; set;}
80 } 70 }
81 events { 71 events {
82 item,pressed : Efl.Ui.Item; [[A $press event occurred over an item.]] 72 item,pressed : Efl.Ui.Item; [[A $press event occurred over an item.]]
diff --git a/src/lib/elementary/efl_ui_item.c b/src/lib/elementary/efl_ui_item.c
index 1ccc987759..6e88a84f10 100644
--- a/src/lib/elementary/efl_ui_item.c
+++ b/src/lib/elementary/efl_ui_item.c
@@ -273,3 +273,5 @@ _efl_ui_item_container_get(const Eo *obj EINA_UNUSED, Efl_Ui_Item_Data *pd)
273 273
274#include "efl_ui_item.eo.c" 274#include "efl_ui_item.eo.c"
275#include "efl_ui_selectable.eo.c" 275#include "efl_ui_selectable.eo.c"
276#include "efl_ui_multi_selectable.eo.c"
277#include "efl_ui_single_selectable.eo.c"
diff --git a/src/lib/efl/interfaces/efl_ui_multi_selectable.eo b/src/lib/elementary/efl_ui_multi_selectable.eo
index 2f7eac4788..3957fe332e 100644
--- a/src/lib/efl/interfaces/efl_ui_multi_selectable.eo
+++ b/src/lib/elementary/efl_ui_multi_selectable.eo
@@ -8,10 +8,11 @@ enum @beta Efl.Ui.Select_Mode {
8 none [[Last value of select mode. child cannot be selected at all.]] 8 none [[Last value of select mode. child cannot be selected at all.]]
9} 9}
10 10
11interface @beta Efl.Ui.Multi_Selectable 11interface @beta Efl.Ui.Multi_Selectable extends Efl.Ui.Single_Selectable
12{ 12{
13 [[Efl UI Multi selectable interface. 13 [[Interface for getting access to a range of selected items.
14 The container have to control select property of multiple chidren.]] 14
15 The implementor of this interface provides the possibility to select multiple Selectables. (If not, only Efl.Ui.Single_Selectable should be implemented)]]
15 c_prefix: efl_ui; 16 c_prefix: efl_ui;
16 methods 17 methods
17 { 18 {
@@ -23,5 +24,9 @@ interface @beta Efl.Ui.Multi_Selectable
23 mode: Efl.Ui.Select_Mode; [[Type of selection of children]] 24 mode: Efl.Ui.Select_Mode; [[Type of selection of children]]
24 } 25 }
25 } 26 }
27 selected_items_get {
28 [[Get the selected items in a iterator. The iterator sequence will be decided by selection.]]
29 return: iterator<Efl.Ui.Selectable> @owned @no_unused; [[User has to free the iterator after usage.]]
30 }
26 } 31 }
27} 32}
diff --git a/src/lib/elementary/efl_ui_single_selectable.eo b/src/lib/elementary/efl_ui_single_selectable.eo
new file mode 100644
index 0000000000..c2777ff106
--- /dev/null
+++ b/src/lib/elementary/efl_ui_single_selectable.eo
@@ -0,0 +1,17 @@
1interface @beta Efl.Ui.Single_Selectable {
2 [[Interface for getting access to a single selected item in the implementor.
3
4 The implementor is free to allow a specific number of selectables beeing selected or not. This interface just covers always the latest selected selectable.
5 ]]
6 methods {
7 @property last_selected {
8 [[The selectable that was selected most recently.]]
9 get {
10
11 }
12 values {
13 selectable : Efl.Ui.Selectable; [[The latest selected item.]]
14 }
15 }
16 }
17}
diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build
index e42223682b..06cad2bff3 100644
--- a/src/lib/elementary/meson.build
+++ b/src/lib/elementary/meson.build
@@ -183,6 +183,8 @@ pub_eo_files = [
183 'efl_ui_position_manager_list.eo', 183 'efl_ui_position_manager_list.eo',
184 'efl_ui_position_manager_grid.eo', 184 'efl_ui_position_manager_grid.eo',
185 'efl_ui_selectable.eo', 185 'efl_ui_selectable.eo',
186 'efl_ui_multi_selectable.eo',
187 'efl_ui_single_selectable.eo',
186] 188]
187 189
188foreach eo_file : pub_eo_files 190foreach eo_file : pub_eo_files
diff --git a/src/tests/elementary/efl_ui_test_collection_common.c b/src/tests/elementary/efl_ui_test_collection_common.c
index 746b86d938..7be3c7c532 100644
--- a/src/tests/elementary/efl_ui_test_collection_common.c
+++ b/src/tests/elementary/efl_ui_test_collection_common.c
@@ -22,212 +22,6 @@ fill_items(const Efl_Class *klass)
22 } 22 }
23} 23}
24 24
25static void 25void efl_ui_test_item_container_common_add(TCase *tc EINA_UNUSED)
26_set_pointer_quit(void *data, const Efl_Event *ev)
27{ 26{
28 Efl_Ui_Item **b = data;
29
30 ck_assert_ptr_eq(*b, NULL);
31 *b = ev->info;
32}
33
34static void
35_iterator_to_array(Eina_Array **arr, Eina_Iterator *iter)
36{
37 Efl_Ui_Widget *widget;
38
39 *arr = eina_array_new(10);
40
41 EINA_ITERATOR_FOREACH(iter, widget)
42 {
43 eina_array_push(*arr, widget);
44 }
45 eina_iterator_free(iter);
46}
47
48EFL_START_TEST(test_multi_select)
49{
50 Efl_Ui_Item *selected = NULL;
51 Efl_Ui_Item *unselected = NULL;
52 Eina_Array *arr_selected;
53 efl_ui_select_mode_set(item_container, EFL_UI_SELECT_MODE_MULTI);
54 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
55 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
56 fill_items(EFL_UI_LIST_DEFAULT_ITEM_CLASS);
57
58 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 0), EINA_TRUE);
59 ck_assert_ptr_eq(selected, efl_pack_content_get(item_container, 0));
60 ck_assert_ptr_eq(unselected, NULL);
61 selected = NULL;
62 unselected = NULL;
63 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
64 ck_assert_ptr_eq(selected, efl_pack_content_get(item_container, 2));
65 ck_assert_ptr_eq(unselected, NULL);
66 selected = NULL;
67 unselected = NULL;
68 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 0)), EINA_TRUE);
69 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 2)), EINA_TRUE);
70 ck_assert_ptr_eq(efl_ui_collection_last_selected_item_get(item_container), efl_pack_content_get(item_container, 2));
71 _iterator_to_array(&arr_selected, efl_ui_collection_selected_items_get(item_container));
72 ck_assert_int_eq(eina_array_count(arr_selected), 2);
73 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 0), efl_pack_content_get(item_container, 0));
74 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 1), efl_pack_content_get(item_container, 2));
75
76 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
77 ck_assert_ptr_eq(selected, NULL);
78 ck_assert_ptr_eq(unselected, NULL);
79 selected = NULL;
80 unselected = NULL;
81 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
82 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
83}
84EFL_END_TEST
85
86EFL_START_TEST(test_multi_select_removal)
87{
88 Efl_Ui_Item *selected = NULL;
89 Efl_Ui_Item *unselected = NULL;
90 Eina_Array *arr_selected;
91 efl_ui_select_mode_set(item_container, EFL_UI_SELECT_MODE_MULTI);
92 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
93 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
94 fill_items(EFL_UI_LIST_DEFAULT_ITEM_CLASS);
95
96 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 0), EINA_TRUE);
97 selected = NULL;//No need to ckeck the flag, we asserted in the tcase before
98 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
99 selected = NULL;//No need to ckeck the flag, we asserted in the tcase before
100 unselected = NULL;
101 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 0), EINA_FALSE);
102 ck_assert_ptr_eq(selected, NULL);
103 ck_assert_ptr_eq(unselected, efl_pack_content_get(item_container, 0));
104 selected = NULL;
105 unselected = NULL;
106 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_FALSE);
107 ck_assert_ptr_eq(selected, NULL);
108 ck_assert_ptr_eq(unselected, efl_pack_content_get(item_container, 2));
109 selected = NULL;
110 unselected = NULL;
111
112 ck_assert_ptr_eq(efl_ui_collection_last_selected_item_get(item_container), NULL);
113 _iterator_to_array(&arr_selected, efl_ui_collection_selected_items_get(item_container));
114 ck_assert_int_eq(eina_array_count(arr_selected), 0);
115 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
116 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
117}
118EFL_END_TEST
119
120EFL_START_TEST(test_single_select)
121{
122 Efl_Ui_Item *selected = NULL;
123 Efl_Ui_Item *unselected = NULL;
124 Eina_Array *arr_selected;
125
126 efl_ui_select_mode_set(item_container, EFL_UI_SELECT_MODE_SINGLE);
127 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
128 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
129 fill_items(EFL_UI_LIST_DEFAULT_ITEM_CLASS);
130
131 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 0), EINA_TRUE);
132 ck_assert_ptr_eq(selected, efl_pack_content_get(item_container, 0));
133 ck_assert_ptr_eq(unselected, NULL);
134 selected = NULL;
135 unselected = NULL;
136 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
137 ck_assert_ptr_eq(selected, efl_pack_content_get(item_container, 2));
138 ck_assert_ptr_eq(unselected, efl_pack_content_get(item_container, 0));
139 selected = NULL;
140 unselected = NULL;
141 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 0)), EINA_FALSE);
142 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 2)), EINA_TRUE);
143 ck_assert_ptr_eq(efl_ui_collection_last_selected_item_get(item_container), efl_pack_content_get(item_container, 2));
144 _iterator_to_array(&arr_selected, efl_ui_collection_selected_items_get(item_container));
145 ck_assert_int_eq(eina_array_count(arr_selected), 1);
146 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 0), efl_pack_content_get(item_container, 2));
147
148 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
149 ck_assert_ptr_eq(selected, NULL);
150 ck_assert_ptr_eq(unselected, NULL);
151 selected = NULL;
152 unselected = NULL;
153 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
154 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
155}
156EFL_END_TEST
157
158EFL_START_TEST(test_single_select_always)
159{
160 Efl_Ui_Item *selected = NULL;
161 Efl_Ui_Item *unselected = NULL;
162 Eina_Array *arr_selected;
163
164 efl_ui_select_mode_set(item_container, EFL_UI_SELECT_MODE_SINGLE_ALWAYS);
165 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
166 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
167 fill_items(EFL_UI_LIST_DEFAULT_ITEM_CLASS);
168
169 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 0), EINA_TRUE);
170 ck_assert_ptr_eq(selected, efl_pack_content_get(item_container, 0));
171 ck_assert_ptr_eq(unselected, NULL);
172 selected = NULL;
173 unselected = NULL;
174 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
175 ck_assert_ptr_eq(selected, efl_pack_content_get(item_container, 2));
176 ck_assert_ptr_eq(unselected, efl_pack_content_get(item_container, 0));
177 selected = NULL;
178 unselected = NULL;
179 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
180 ck_assert_ptr_eq(selected, efl_pack_content_get(item_container, 2));
181 ck_assert_ptr_eq(unselected, NULL);
182 selected = NULL;
183 unselected = NULL;
184 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 0)), EINA_FALSE);
185 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 2)), EINA_TRUE);
186 ck_assert_ptr_eq(efl_ui_collection_last_selected_item_get(item_container), efl_pack_content_get(item_container, 2));
187 _iterator_to_array(&arr_selected, efl_ui_collection_selected_items_get(item_container));
188 ck_assert_int_eq(eina_array_count(arr_selected), 1);
189 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 0), efl_pack_content_get(item_container, 2));
190 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
191 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
192}
193EFL_END_TEST
194
195EFL_START_TEST(test_none_select)
196{
197 Efl_Ui_Item *selected = NULL;
198 Efl_Ui_Item *unselected = NULL;
199 Eina_Array *arr_selected;
200
201 efl_ui_select_mode_set(item_container, EFL_UI_SELECT_MODE_NONE);
202 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
203 efl_event_callback_add(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
204 fill_items(EFL_UI_LIST_DEFAULT_ITEM_CLASS);
205
206 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 0), EINA_TRUE);
207 ck_assert_ptr_eq(selected, NULL);
208 ck_assert_ptr_eq(unselected, NULL);
209 selected = NULL;
210 unselected = NULL;
211 efl_ui_selectable_selected_set(efl_pack_content_get(item_container, 2), EINA_TRUE);
212 ck_assert_ptr_eq(selected, NULL);
213 ck_assert_ptr_eq(unselected, NULL);
214 selected = NULL;
215 unselected = NULL;
216 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 0)), EINA_FALSE);
217 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(item_container, 2)), EINA_FALSE);
218 ck_assert_ptr_eq(efl_ui_collection_last_selected_item_get(item_container), NULL);
219 _iterator_to_array(&arr_selected, efl_ui_collection_selected_items_get(item_container));
220 ck_assert_int_eq(eina_array_count(arr_selected), 0);
221 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
222 efl_event_callback_del(item_container, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
223}
224EFL_END_TEST
225
226void efl_ui_test_item_container_common_add(TCase *tc)
227{
228 tcase_add_test(tc, test_multi_select);
229 tcase_add_test(tc, test_multi_select_removal);
230 tcase_add_test(tc, test_single_select);
231 tcase_add_test(tc, test_none_select);
232 tcase_add_test(tc, test_single_select_always);
233} 27}
diff --git a/src/tests/elementary/spec/efl_test_multi_selectable.c b/src/tests/elementary/spec/efl_test_multi_selectable.c
new file mode 100644
index 0000000000..38c9a9a59e
--- /dev/null
+++ b/src/tests/elementary/spec/efl_test_multi_selectable.c
@@ -0,0 +1,239 @@
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4
5#include <Efl_Ui.h>
6#include "efl_ui_spec_suite.h"
7#include "suite_helpers.h"
8
9/* spec-meta-start
10 {"test-interface":"Efl.Ui.Multi_Selectable",
11 "test-widgets": ["Efl.Ui.Grid", "Efl.Ui.List"],
12 "custom-mapping" : {
13 "Efl.Ui.Grid" : "EFL_UI_GRID_DEFAULT_ITEM_CLASS",
14 "Efl.Ui.List" : "EFL_UI_LIST_DEFAULT_ITEM_CLASS"
15 }
16 }
17
18 spec-meta-end */
19
20
21static void
22_setup(void)
23{
24 Eo *c[3];
25
26 for (int i = 0; i < 3; ++i)
27 {
28 c[i] = create_test_widget();
29 efl_pack_end(widget, c[i]);
30 }
31}
32
33static void
34_set_pointer_quit(void *data, const Efl_Event *ev)
35{
36 Efl_Ui_Item **b = data;
37
38 ck_assert_ptr_eq(*b, NULL);
39 *b = ev->info;
40}
41
42static void
43_iterator_to_array(Eina_Array **arr, Eina_Iterator *iter)
44{
45 Efl_Ui_Widget *widget;
46
47 *arr = eina_array_new(10);
48
49 EINA_ITERATOR_FOREACH(iter, widget)
50 {
51 eina_array_push(*arr, widget);
52 }
53 eina_iterator_free(iter);
54}
55
56EFL_START_TEST(test_multi_select)
57{
58 Efl_Ui_Item *selected = NULL;
59 Efl_Ui_Item *unselected = NULL;
60 Eina_Array *arr_selected;
61 efl_ui_select_mode_set(widget, EFL_UI_SELECT_MODE_MULTI);
62 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
63 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
64
65 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 0), EINA_TRUE);
66 ck_assert_ptr_eq(selected, efl_pack_content_get(widget, 0));
67 ck_assert_ptr_eq(unselected, NULL);
68 selected = NULL;
69 unselected = NULL;
70 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
71 ck_assert_ptr_eq(selected, efl_pack_content_get(widget, 2));
72 ck_assert_ptr_eq(unselected, NULL);
73 selected = NULL;
74 unselected = NULL;
75 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 0)), EINA_TRUE);
76 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 2)), EINA_TRUE);
77 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), efl_pack_content_get(widget, 2));
78 _iterator_to_array(&arr_selected, efl_ui_selected_items_get(widget));
79 ck_assert_int_eq(eina_array_count(arr_selected), 2);
80 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 0), efl_pack_content_get(widget, 0));
81 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 1), efl_pack_content_get(widget, 2));
82
83 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
84 ck_assert_ptr_eq(selected, NULL);
85 ck_assert_ptr_eq(unselected, NULL);
86 selected = NULL;
87 unselected = NULL;
88 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
89 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
90}
91EFL_END_TEST
92
93EFL_START_TEST(test_multi_select_removal)
94{
95 Efl_Ui_Item *selected = NULL;
96 Efl_Ui_Item *unselected = NULL;
97 Eina_Array *arr_selected;
98 efl_ui_select_mode_set(widget, EFL_UI_SELECT_MODE_MULTI);
99 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
100 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
101
102 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 0), EINA_TRUE);
103 selected = NULL;//No need to ckeck the flag, we asserted in the tcase before
104 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
105 selected = NULL;//No need to ckeck the flag, we asserted in the tcase before
106 unselected = NULL;
107 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 0), EINA_FALSE);
108 ck_assert_ptr_eq(selected, NULL);
109 ck_assert_ptr_eq(unselected, efl_pack_content_get(widget, 0));
110 selected = NULL;
111 unselected = NULL;
112 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_FALSE);
113 ck_assert_ptr_eq(selected, NULL);
114 ck_assert_ptr_eq(unselected, efl_pack_content_get(widget, 2));
115 selected = NULL;
116 unselected = NULL;
117
118 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), NULL);
119 _iterator_to_array(&arr_selected, efl_ui_selected_items_get(widget));
120 ck_assert_int_eq(eina_array_count(arr_selected), 0);
121 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
122 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
123}
124EFL_END_TEST
125
126EFL_START_TEST(test_single_select)
127{
128 Efl_Ui_Item *selected = NULL;
129 Efl_Ui_Item *unselected = NULL;
130 Eina_Array *arr_selected;
131
132 efl_ui_select_mode_set(widget, EFL_UI_SELECT_MODE_SINGLE);
133 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
134 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
135
136 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 0), EINA_TRUE);
137 ck_assert_ptr_eq(selected, efl_pack_content_get(widget, 0));
138 ck_assert_ptr_eq(unselected, NULL);
139 selected = NULL;
140 unselected = NULL;
141 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
142 ck_assert_ptr_eq(selected, efl_pack_content_get(widget, 2));
143 ck_assert_ptr_eq(unselected, efl_pack_content_get(widget, 0));
144 selected = NULL;
145 unselected = NULL;
146 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 0)), EINA_FALSE);
147 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 2)), EINA_TRUE);
148 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), efl_pack_content_get(widget, 2));
149 _iterator_to_array(&arr_selected, efl_ui_selected_items_get(widget));
150 ck_assert_int_eq(eina_array_count(arr_selected), 1);
151 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 0), efl_pack_content_get(widget, 2));
152
153 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
154 ck_assert_ptr_eq(selected, NULL);
155 ck_assert_ptr_eq(unselected, NULL);
156 selected = NULL;
157 unselected = NULL;
158 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
159 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
160}
161EFL_END_TEST
162
163EFL_START_TEST(test_single_select_always)
164{
165 Efl_Ui_Item *selected = NULL;
166 Efl_Ui_Item *unselected = NULL;
167 Eina_Array *arr_selected;
168
169 efl_ui_select_mode_set(widget, EFL_UI_SELECT_MODE_SINGLE_ALWAYS);
170 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
171 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
172
173 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 0), EINA_TRUE);
174 ck_assert_ptr_eq(selected, efl_pack_content_get(widget, 0));
175 ck_assert_ptr_eq(unselected, NULL);
176 selected = NULL;
177 unselected = NULL;
178 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
179 ck_assert_ptr_eq(selected, efl_pack_content_get(widget, 2));
180 ck_assert_ptr_eq(unselected, efl_pack_content_get(widget, 0));
181 selected = NULL;
182 unselected = NULL;
183 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
184 ck_assert_ptr_eq(selected, efl_pack_content_get(widget, 2));
185 ck_assert_ptr_eq(unselected, NULL);
186 selected = NULL;
187 unselected = NULL;
188 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 0)), EINA_FALSE);
189 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 2)), EINA_TRUE);
190 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), efl_pack_content_get(widget, 2));
191 _iterator_to_array(&arr_selected, efl_ui_selected_items_get(widget));
192 ck_assert_int_eq(eina_array_count(arr_selected), 1);
193 ck_assert_ptr_eq(eina_array_data_get(arr_selected, 0), efl_pack_content_get(widget, 2));
194 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
195 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
196}
197EFL_END_TEST
198
199EFL_START_TEST(test_none_select)
200{
201 Efl_Ui_Item *selected = NULL;
202 Efl_Ui_Item *unselected = NULL;
203 Eina_Array *arr_selected;
204
205 efl_ui_select_mode_set(widget, EFL_UI_SELECT_MODE_NONE);
206 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
207 efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
208
209 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 0), EINA_TRUE);
210 ck_assert_ptr_eq(selected, NULL);
211 ck_assert_ptr_eq(unselected, NULL);
212 selected = NULL;
213 unselected = NULL;
214 efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE);
215 ck_assert_ptr_eq(selected, NULL);
216 ck_assert_ptr_eq(unselected, NULL);
217 selected = NULL;
218 unselected = NULL;
219 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 0)), EINA_FALSE);
220 ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 2)), EINA_FALSE);
221 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), NULL);
222 _iterator_to_array(&arr_selected, efl_ui_selected_items_get(widget));
223 ck_assert_int_eq(eina_array_count(arr_selected), 0);
224 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected);
225 efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected);
226}
227EFL_END_TEST
228
229void
230efl_ui_multi_selectable_behavior_test(TCase *tc)
231{
232 tcase_add_checked_fixture(tc, _setup, NULL);
233 tcase_add_test(tc, test_multi_select);
234 tcase_add_test(tc, test_multi_select_removal);
235 tcase_add_test(tc, test_single_select);
236 tcase_add_test(tc, test_none_select);
237 tcase_add_test(tc, test_single_select_always);
238 efl_ui_single_selectable_behavior_test(tc);
239}
diff --git a/src/tests/elementary/spec/efl_test_single_selectable.c b/src/tests/elementary/spec/efl_test_single_selectable.c
new file mode 100644
index 0000000000..c62f78afc4
--- /dev/null
+++ b/src/tests/elementary/spec/efl_test_single_selectable.c
@@ -0,0 +1,56 @@
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4
5#include <Efl_Ui.h>
6#include "efl_ui_spec_suite.h"
7#include "suite_helpers.h"
8
9/* spec-meta-start
10 {"test-interface":"Efl.Ui.Single_Selectable",
11 "test-widgets": ["Efl.Ui.Grid", "Efl.Ui.List"],
12 "custom-mapping" : {
13 "Efl.Ui.Grid" : "EFL_UI_GRID_DEFAULT_ITEM_CLASS",
14 "Efl.Ui.List" : "EFL_UI_LIST_DEFAULT_ITEM_CLASS"
15 }
16 }
17
18 spec-meta-end */
19
20static void
21_setup(void)
22{
23 Eo *c[3];
24
25 for (int i = 0; i < 3; ++i)
26 {
27 c[i] = create_test_widget();
28 if (efl_isa(c[i], EFL_UI_RADIO_CLASS))
29 efl_ui_radio_state_value_set(c[i], i+1);
30 efl_pack_end(widget, c[i]);
31 }
32}
33
34EFL_START_TEST(last_selectable_check)
35{
36 Eo *c1 = efl_pack_content_get(widget, 0);
37 Eo *c2 = efl_pack_content_get(widget, 2);
38
39 efl_ui_selectable_selected_set(c1, EINA_TRUE);
40 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), c1);
41
42 efl_ui_selectable_selected_set(c2, EINA_TRUE);
43 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), c2);
44 efl_ui_selectable_selected_set(c1, EINA_FALSE);
45 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), c2);
46 efl_ui_selectable_selected_set(c2, EINA_FALSE);
47 ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), NULL);
48}
49EFL_END_TEST
50
51void
52efl_ui_single_selectable_behavior_test(TCase *tc)
53{
54 tcase_add_checked_fixture(tc, _setup, NULL);
55 tcase_add_test(tc, last_selectable_check);
56}
diff --git a/src/tests/elementary/spec/efl_ui_spec_suite.h b/src/tests/elementary/spec/efl_ui_spec_suite.h
index 01be37652d..187d87b0c0 100644
--- a/src/tests/elementary/spec/efl_ui_spec_suite.h
+++ b/src/tests/elementary/spec/efl_ui_spec_suite.h
@@ -19,6 +19,8 @@ void efl_ui_format_behavior_test(TCase *tc);
19void efl_ui_range_display_behavior_test(TCase *tc); 19void efl_ui_range_display_behavior_test(TCase *tc);
20void efl_ui_range_display_interactive_behavior_test(TCase *tc); 20void efl_ui_range_display_interactive_behavior_test(TCase *tc);
21void efl_ui_view_behavior_test(TCase *tc); 21void efl_ui_view_behavior_test(TCase *tc);
22void efl_ui_single_selectable_behavior_test(TCase *tc);
23void efl_ui_multi_selectable_behavior_test(TCase *tc);
22 24
23void efl_test_container_content_equal(Efl_Ui_Widget **wid, unsigned int len); 25void efl_test_container_content_equal(Efl_Ui_Widget **wid, unsigned int len);
24void efl_test_container_expect_evt_content_added(Efl_Ui_Widget *widget, const Efl_Event_Description *ev, Eina_Bool *flag, void *event_data); 26void efl_test_container_expect_evt_content_added(Efl_Ui_Widget *widget, const Efl_Event_Description *ev, Eina_Bool *flag, void *event_data);
diff --git a/src/tests/elementary/spec/meson.build b/src/tests/elementary/spec/meson.build
index d23c3860dc..4de4037eb4 100644
--- a/src/tests/elementary/spec/meson.build
+++ b/src/tests/elementary/spec/meson.build
@@ -8,6 +8,8 @@ efl_ui_suite_behavior_test_files = files([
8 'efl_test_range_display.c', 8 'efl_test_range_display.c',
9 'efl_test_range_interactive.c', 9 'efl_test_range_interactive.c',
10 'efl_test_ui_view.c', 10 'efl_test_ui_view.c',
11 'efl_test_single_selectable.c',
12 'efl_test_multi_selectable.c',
11]) 13])
12 14
13efl_ui_suite_behavior_src = files([ 15efl_ui_suite_behavior_src = files([