summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-05-14 15:50:15 -0400
committerMike Blumenkrantz <zmike@samsung.com>2019-05-14 15:50:15 -0400
commit64923b8db15fdaa25583824123e56f3c1083ac45 (patch)
treed60ba2be3c05277bab5749ce2540895178090cee
parent7f907ecd9d6152753619967b3b7e2033f69abb28 (diff)
efl_ui: move clickable from efl to efl_ui
Summary: efl_ui_clickable is now a mixin. The mixin now brings two APIs the press and unpress API can be used to tell the implementation the state of the presses. Within the implementation the calls to press / unpress are then converted to longpress / clicked events. Reviewers: zmike, segfaultxavi, cedric Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8820
-rw-r--r--src/Makefile_Efl.am1
-rw-r--r--src/Makefile_Elementary.am4
-rw-r--r--src/lib/efl/Efl.h1
-rw-r--r--src/lib/efl/interfaces/efl_interfaces_main.c1
-rw-r--r--src/lib/efl/interfaces/efl_ui_clickable.eo18
-rw-r--r--src/lib/efl/interfaces/meson.build1
-rw-r--r--src/lib/elementary/Efl_Ui.h2
-rw-r--r--src/lib/elementary/Elementary.h1
-rw-r--r--src/lib/elementary/efl_ui_clickable.c120
-rw-r--r--src/lib/elementary/efl_ui_clickable.eo47
-rw-r--r--src/lib/elementary/efl_ui_clickable_util.c99
-rw-r--r--src/lib/elementary/efl_ui_clickable_util.eo24
-rw-r--r--src/lib/elementary/efl_ui_image_zoomable.c7
-rw-r--r--src/lib/elementary/elm_bubble_eo.c2
-rw-r--r--src/lib/elementary/elm_colorselector_eo.c2
-rw-r--r--src/lib/elementary/elm_diskselector_eo.c2
-rw-r--r--src/lib/elementary/elm_entry_eo.c2
-rw-r--r--src/lib/elementary/elm_fileselector_entry_eo.c2
-rw-r--r--src/lib/elementary/elm_fileselector_eo.c2
-rw-r--r--src/lib/elementary/elm_gengrid_eo.c2
-rw-r--r--src/lib/elementary/elm_genlist_eo.c2
-rw-r--r--src/lib/elementary/elm_hover_eo.c2
-rw-r--r--src/lib/elementary/elm_hoversel_eo.c2
-rw-r--r--src/lib/elementary/elm_index_eo.c2
-rw-r--r--src/lib/elementary/elm_list_eo.c2
-rw-r--r--src/lib/elementary/elm_map_eo.c2
-rw-r--r--src/lib/elementary/elm_menu_eo.c2
-rw-r--r--src/lib/elementary/elm_multibuttonentry_eo.c2
-rw-r--r--src/lib/elementary/elm_photo_eo.c2
-rw-r--r--src/lib/elementary/elm_plug_eo.c2
-rw-r--r--src/lib/elementary/elm_thumb_eo.c2
-rw-r--r--src/lib/elementary/elm_toolbar_eo.c2
-rw-r--r--src/lib/elementary/meson.build6
33 files changed, 327 insertions, 43 deletions
diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am
index e9323a3195..f62bced764 100644
--- a/src/Makefile_Efl.am
+++ b/src/Makefile_Efl.am
@@ -7,7 +7,6 @@ efl_eolian_legacy_files = \
7 lib/efl/interfaces/efl_gfx_frame_controller.eo \ 7 lib/efl/interfaces/efl_gfx_frame_controller.eo \
8 lib/efl/interfaces/efl_input_device.eo \ 8 lib/efl/interfaces/efl_input_device.eo \
9 lib/efl/interfaces/efl_ui_draggable.eo \ 9 lib/efl/interfaces/efl_ui_draggable.eo \
10 lib/efl/interfaces/efl_ui_clickable.eo \
11 lib/efl/interfaces/efl_ui_scrollable.eo \ 10 lib/efl/interfaces/efl_ui_scrollable.eo \
12 lib/efl/interfaces/efl_ui_scrollable_interactive.eo \ 11 lib/efl/interfaces/efl_ui_scrollable_interactive.eo \
13 lib/efl/interfaces/efl_ui_scrollbar.eo \ 12 lib/efl/interfaces/efl_ui_scrollbar.eo \
diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
index 9baaecc0ef..a67a8d9e7e 100644
--- a/src/Makefile_Elementary.am
+++ b/src/Makefile_Elementary.am
@@ -132,6 +132,8 @@ elm_public_eolian_files = \
132 lib/elementary/efl_ui_caching_factory.eo \ 132 lib/elementary/efl_ui_caching_factory.eo \
133 lib/elementary/efl_ui_widget_factory.eo \ 133 lib/elementary/efl_ui_widget_factory.eo \
134 lib/elementary/efl_ui_relative_layout.eo \ 134 lib/elementary/efl_ui_relative_layout.eo \
135 lib/elementary/efl_ui_clickable.eo \
136 lib/elementary/efl_ui_clickable_util.eo \
135 $(NULL) 137 $(NULL)
136 138
137# More public files -- FIXME 139# More public files -- FIXME
@@ -1211,6 +1213,8 @@ lib_elementary_libelementary_la_SOURCES = \
1211 lib/elementary/efl_ui_exact_model.c \ 1213 lib/elementary/efl_ui_exact_model.c \
1212 lib/elementary/efl_ui_average_model.c \ 1214 lib/elementary/efl_ui_average_model.c \
1213 lib/elementary/efl_ui_relative_layout.c \ 1215 lib/elementary/efl_ui_relative_layout.c \
1216 lib/elementary/efl_ui_clickable.c \
1217 lib/elementary/efl_ui_clickable_util.c \
1214 $(NULL) 1218 $(NULL)
1215 1219
1216 1220
diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
index 9a21ee8bc3..c0651a861a 100644
--- a/src/lib/efl/Efl.h
+++ b/src/lib/efl/Efl.h
@@ -104,7 +104,6 @@ typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command;
104#include "interfaces/efl_ui_range_interactive.eo.h" 104#include "interfaces/efl_ui_range_interactive.eo.h"
105#include "interfaces/efl_ui_autorepeat.eo.h" 105#include "interfaces/efl_ui_autorepeat.eo.h"
106#include "interfaces/efl_ui_draggable.eo.h" 106#include "interfaces/efl_ui_draggable.eo.h"
107#include "interfaces/efl_ui_clickable.eo.h"
108#include "interfaces/efl_ui_scrollable.eo.h" 107#include "interfaces/efl_ui_scrollable.eo.h"
109#include "interfaces/efl_ui_scrollbar.eo.h" 108#include "interfaces/efl_ui_scrollbar.eo.h"
110#include "interfaces/efl_ui_scrollable_interactive.eo.h" 109#include "interfaces/efl_ui_scrollable_interactive.eo.h"
diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c b/src/lib/efl/interfaces/efl_interfaces_main.c
index b3bbf4fa9b..4d7927f6f8 100644
--- a/src/lib/efl/interfaces/efl_interfaces_main.c
+++ b/src/lib/efl/interfaces/efl_interfaces_main.c
@@ -72,7 +72,6 @@
72#include "interfaces/efl_ui_factory_bind.eo.c" 72#include "interfaces/efl_ui_factory_bind.eo.c"
73 73
74#include "interfaces/efl_ui_draggable.eo.c" 74#include "interfaces/efl_ui_draggable.eo.c"
75#include "interfaces/efl_ui_clickable.eo.c"
76#include "interfaces/efl_ui_scrollable.eo.c" 75#include "interfaces/efl_ui_scrollable.eo.c"
77#include "interfaces/efl_ui_scrollable_interactive.eo.c" 76#include "interfaces/efl_ui_scrollable_interactive.eo.c"
78#include "interfaces/efl_ui_scrollbar.eo.c" 77#include "interfaces/efl_ui_scrollbar.eo.c"
diff --git a/src/lib/efl/interfaces/efl_ui_clickable.eo b/src/lib/efl/interfaces/efl_ui_clickable.eo
deleted file mode 100644
index 97806e7501..0000000000
--- a/src/lib/efl/interfaces/efl_ui_clickable.eo
+++ /dev/null
@@ -1,18 +0,0 @@
1interface @beta Efl.Ui.Clickable
2{
3 [[Efl UI clickable interface]]
4 event_prefix: efl_ui;
5 events {
6 /* FIXME: Explain what are the objects passed through the event_infos */
7 clicked: void; [[Called when object is clicked]]
8 clicked,double: void; [[Called when object receives a double click]]
9 clicked,triple: void; [[Called when object receives a triple click]]
10 clicked,right: Efl.Object; [[Called when object receives a right click]]
11 /* FIXME: Might be NULL */
12 pressed: Efl.Object; [[Called when the object is pressed]]
13 /* FIXME: Might be NULL */
14 unpressed: Efl.Object; [[Called when the object is no longer pressed]]
15 /* FIXME: Might be NULL */
16 longpressed: Efl.Object; [[Called when the object receives a long press]]
17 }
18}
diff --git a/src/lib/efl/interfaces/meson.build b/src/lib/efl/interfaces/meson.build
index 3efefbf4f9..d29af1cd6d 100644
--- a/src/lib/efl/interfaces/meson.build
+++ b/src/lib/efl/interfaces/meson.build
@@ -8,7 +8,6 @@ pub_legacy_eo_files = [
8 'efl_gfx_frame_controller.eo', 8 'efl_gfx_frame_controller.eo',
9 'efl_input_device.eo', 9 'efl_input_device.eo',
10 'efl_ui_draggable.eo', 10 'efl_ui_draggable.eo',
11 'efl_ui_clickable.eo',
12 'efl_ui_scrollable.eo', 11 'efl_ui_scrollable.eo',
13 'efl_ui_scrollable_interactive.eo', 12 'efl_ui_scrollable_interactive.eo',
14 'efl_ui_scrollbar.eo', 13 'efl_ui_scrollbar.eo',
diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h
index 246ebf8456..34f0549f4d 100644
--- a/src/lib/elementary/Efl_Ui.h
+++ b/src/lib/elementary/Efl_Ui.h
@@ -235,6 +235,8 @@ EAPI void efl_ui_focus_relation_free(Efl_Ui_Focus_Relations *rel);
235# include <efl_ui_navigation_bar_part_back_button.eo.h> 235# include <efl_ui_navigation_bar_part_back_button.eo.h>
236# include <efl_ui_navigation_layout.eo.h> 236# include <efl_ui_navigation_layout.eo.h>
237# include <efl_ui_stack.eo.h> 237# include <efl_ui_stack.eo.h>
238# include <efl_ui_clickable.eo.h>
239# include <efl_ui_clickable_util.eo.h>
238 240
239/** 241/**
240 * Initialize Elementary 242 * Initialize Elementary
diff --git a/src/lib/elementary/Elementary.h b/src/lib/elementary/Elementary.h
index b7e0bd678e..4fa8c3e468 100644
--- a/src/lib/elementary/Elementary.h
+++ b/src/lib/elementary/Elementary.h
@@ -171,6 +171,7 @@ typedef Eo Efl_Ui_Focus_Manager;
171#ifdef EFL_BETA_API_SUPPORT 171#ifdef EFL_BETA_API_SUPPORT
172# include <elm_interface_scrollable.h> 172# include <elm_interface_scrollable.h>
173# include <elm_interface_scrollable.eo.h> 173# include <elm_interface_scrollable.eo.h>
174#include <efl_ui_clickable.eo.h>
174#endif 175#endif
175 176
176#include <elm_tooltip.h> 177#include <elm_tooltip.h>
diff --git a/src/lib/elementary/efl_ui_clickable.c b/src/lib/elementary/efl_ui_clickable.c
new file mode 100644
index 0000000000..ced9609e35
--- /dev/null
+++ b/src/lib/elementary/efl_ui_clickable.c
@@ -0,0 +1,120 @@
1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
5#define EFL_UI_CLICKABLE_PROTECTED 1
6
7#include <Efl_Ui.h>
8#include "elm_priv.h"
9
10typedef struct {
11 Eina_Bool pressed;
12 int pressed_before;
13 Efl_Loop_Timer *timer;
14 double clicked_last_time;
15} Button_State;
16
17typedef struct {
18 Button_State state[3];
19} Efl_Ui_Clickable_Data;
20
21#define MY_CLASS EFL_UI_CLICKABLE_MIXIN
22
23#define DOUBLE_CLICK_TIME ((double)0.1) //in seconds
24#define LONGPRESS_TIMEOUT ((double)1.0) //in seconds
25
26static void
27_timer_longpress(void *data, const Efl_Event *ev)
28{
29 Button_State *state;
30 Efl_Ui_Clickable_Data *pd = efl_data_scope_get(data, MY_CLASS);
31
32 for (int i = 0; i < 3; ++i)
33 {
34 state = &pd->state[i];
35 if (state->timer == ev->object)
36 {
37 efl_del(state->timer);
38 state->timer = NULL;
39 efl_event_callback_call(data, EFL_UI_EVENT_LONGPRESSED, &i);
40 }
41 }
42}
43
44EOLIAN static void
45_efl_ui_clickable_press(Eo *obj EINA_UNUSED, Efl_Ui_Clickable_Data *pd, unsigned int button)
46{
47 Button_State *state;
48 EINA_SAFETY_ON_FALSE_RETURN(button < 3);
49
50 INF("Widget %s,%p is pressed(%d)", efl_class_name_get(obj), obj, button);
51
52 state = &pd->state[button];
53 EINA_SAFETY_ON_NULL_RETURN(state);
54
55 state->pressed = EINA_TRUE;
56 if (state->timer) efl_del(state->timer);
57 state->timer = efl_add(EFL_LOOP_TIMER_CLASS, obj,
58 efl_loop_timer_interval_set(efl_added, LONGPRESS_TIMEOUT),
59 efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TIMER_TICK, _timer_longpress, obj));
60
61 efl_event_callback_call(obj, EFL_UI_EVENT_PRESSED, &button);
62}
63
64EOLIAN static void
65_efl_ui_clickable_unpress(Eo *obj EINA_UNUSED, Efl_Ui_Clickable_Data *pd, unsigned int button)
66{
67 Efl_Ui_Clickable_Clicked clicked;
68 Button_State *state;
69 Eina_Bool pressed;
70 EINA_SAFETY_ON_FALSE_RETURN(button < 3);
71
72 state = &pd->state[button];
73 EINA_SAFETY_ON_NULL_RETURN(state);
74
75 INF("Widget %s,%p is unpressed(%d):%d", efl_class_name_get(obj), obj, button, state->pressed);
76
77 //eval if this is a repeated click
78 if (state->clicked_last_time > 0.0 && ecore_time_unix_get() - state->clicked_last_time < DOUBLE_CLICK_TIME)
79 state->pressed_before++;
80 else
81 state->pressed_before = 0;
82 //reset state
83 state->clicked_last_time = ecore_time_unix_get();
84 pressed = state->pressed;
85 state->pressed = EINA_FALSE;
86 if (state->timer)
87 efl_del(state->timer);
88 state->timer = NULL;
89
90 //populate state
91 efl_event_callback_call(obj, EFL_UI_EVENT_UNPRESSED, &button);
92 if (pressed)
93 {
94 INF("Widget %s,%p is clicked(%d)", efl_class_name_get(obj), obj, button);
95 clicked.repeated = state->pressed_before;
96 clicked.button = button;
97 if (button == 1)
98 efl_event_callback_call(obj, EFL_UI_EVENT_CLICKED, &clicked);
99 efl_event_callback_call(obj, EFL_UI_EVENT_CLICKED_ANY, &clicked);
100 }
101}
102
103EOLIAN static void
104_efl_ui_clickable_button_state_reset(Eo *obj EINA_UNUSED, Efl_Ui_Clickable_Data *pd, unsigned int button)
105{
106 Button_State *state;
107 EINA_SAFETY_ON_FALSE_RETURN(button < 3);
108
109 state = &pd->state[button];
110 EINA_SAFETY_ON_NULL_RETURN(state);
111
112 INF("Widget %s,%p is press is aborted(%d):%d", efl_class_name_get(obj), obj, button, state->pressed);
113
114 if (state->timer)
115 efl_del(state->timer);
116 state->timer = NULL;
117 state->pressed = EINA_FALSE;
118}
119
120#include "efl_ui_clickable.eo.c"
diff --git a/src/lib/elementary/efl_ui_clickable.eo b/src/lib/elementary/efl_ui_clickable.eo
new file mode 100644
index 0000000000..de3a3e4fb1
--- /dev/null
+++ b/src/lib/elementary/efl_ui_clickable.eo
@@ -0,0 +1,47 @@
1struct Efl.Ui.Clickable_Clicked {
2 [[A struct that expresses a click in elementary.]]
3 repeated : int; [[The amount of how often the clicked event was repeated in a certain amount of time]]
4 button : int; [[The Button that is pressed]]
5}
6
7mixin @beta Efl.Ui.Clickable
8{
9 [[Efl UI clickable interface]]
10 event_prefix: efl_ui;
11 methods {
12 press @protected {
13 [[Change internal states that a button got pressed.
14
15 When the button is already pressed, this is silently ignored.
16 ]]
17 params {
18 button : uint; [[The number of the button. FIXME ensure to have the right interval of possible input]]
19 }
20 }
21 unpress @protected {
22 [[Change internal states that a button got unpressed.
23
24 When the button is not pressed, this is silently ignored.
25 ]]
26 params {
27 button : uint; [[The number of the button. FIXME ensure to have the right interval of possible input]]
28 }
29 }
30 button_state_reset @protected {
31 [[This aborts the internal state after a press call.
32
33 This will stop the timer for longpress. And set the state of the clickable mixin back into the unpressed state.
34 ]]
35 params {
36 button : uint;
37 }
38 }
39 }
40 events {
41 clicked: Efl.Ui.Clickable_Clicked; [[Called when object is in sequence pressed and unpressed, by the primary button]]
42 clicked,any : Efl.Ui.Clickable_Clicked; [[Called when object is in sequence pressed and unpressed by any button. The button that triggered the event can be found in the event information.]]
43 pressed: int; [[Called when the object is pressed, event_info is the button that got pressed]]
44 unpressed: int; [[Called when the object is no longer pressed, event_info is the button that got pressed]]
45 longpressed: int; [[Called when the object receives a long press, event_info is the button that got pressed]]
46 }
47}
diff --git a/src/lib/elementary/efl_ui_clickable_util.c b/src/lib/elementary/efl_ui_clickable_util.c
new file mode 100644
index 0000000000..b11e0c50e2
--- /dev/null
+++ b/src/lib/elementary/efl_ui_clickable_util.c
@@ -0,0 +1,99 @@
1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
5#define EFL_UI_CLICKABLE_PROTECTED 1
6
7#include <Efl_Ui.h>
8#include "elm_priv.h"
9
10typedef struct {
11
12} Efl_Ui_Clickable_Util_Data;
13
14static void
15_on_press_cb(void *data,
16 Evas_Object *obj EINA_UNUSED,
17 const char *emission EINA_UNUSED,
18 const char *source EINA_UNUSED)
19{
20 efl_ui_clickable_press(data, 1);
21}
22
23static void
24_on_unpress_cb(void *data,
25 Evas_Object *obj EINA_UNUSED,
26 const char *emission EINA_UNUSED,
27 const char *source EINA_UNUSED)
28{
29 efl_ui_clickable_unpress(data, 1);
30}
31
32static void
33_on_mouse_out(void *data,
34 Evas_Object *obj EINA_UNUSED,
35 const char *emission EINA_UNUSED,
36 const char *source EINA_UNUSED)
37{
38 efl_ui_clickable_button_state_reset(data, 1);
39}
40
41EOLIAN static void
42_efl_ui_clickable_util_bind_to_theme(Efl_Canvas_Layout *object, Efl_Ui_Clickable *clickable)
43{
44 efl_layout_signal_callback_add(object, "efl,action,press", "*", clickable, _on_press_cb, NULL);
45 efl_layout_signal_callback_add(object, "efl,action,unpress", "*", clickable, _on_unpress_cb, NULL);
46 efl_layout_signal_callback_add(object, "efl,action,mouse_out", "*", clickable, _on_mouse_out, NULL);
47}
48
49static void
50_press_cb(void *data, const Efl_Event *ev)
51{
52 Efl_Input_Pointer *pointer = ev->info;
53 if (!efl_input_processed_get(pointer))
54 {
55 efl_ui_clickable_press(data, 1);
56 efl_input_processed_set(pointer, EINA_TRUE);
57 }
58}
59
60static void
61_unpress_cb(void *data, const Efl_Event *ev EINA_UNUSED)
62{
63 Efl_Input_Pointer *pointer = ev->info;
64 Eina_Position2D mouse_pos = efl_input_pointer_position_get(pointer);
65 Eina_Rect geom = efl_gfx_entity_geometry_get(data);
66 if (efl_input_processed_get(pointer))
67 {
68 efl_ui_clickable_button_state_reset(data, 1);
69 }
70 else if (!eina_rectangle_coords_inside(&geom.rect, mouse_pos.x, mouse_pos.y))
71 {
72 //we are emulating edje behavior here, do press unpress on the event, but not click
73 efl_ui_clickable_button_state_reset(data, 1);
74 if (efl_canvas_object_pointer_mode_get(data) == EFL_INPUT_OBJECT_POINTER_MODE_AUTO_GRAB)
75 {
76 efl_ui_clickable_unpress(data, 1);
77 efl_input_processed_set(pointer, EINA_TRUE);
78 }
79 }
80 else
81 {
82 efl_ui_clickable_unpress(data, 1);
83 efl_input_processed_set(pointer, EINA_TRUE);
84 }
85}
86
87EFL_CALLBACKS_ARRAY_DEFINE(bind_to_theme_callbacks,
88 {EFL_EVENT_POINTER_DOWN, _press_cb},
89 {EFL_EVENT_POINTER_UP, _unpress_cb},
90)
91
92EOLIAN static void
93_efl_ui_clickable_util_bind_to_object(Efl_Input_Interface *object, Efl_Ui_Clickable *clickable)
94{
95 efl_event_callback_array_add(object, bind_to_theme_callbacks(), clickable);
96}
97
98
99#include "efl_ui_clickable_util.eo.c"
diff --git a/src/lib/elementary/efl_ui_clickable_util.eo b/src/lib/elementary/efl_ui_clickable_util.eo
new file mode 100644
index 0000000000..5f009e2925
--- /dev/null
+++ b/src/lib/elementary/efl_ui_clickable_util.eo
@@ -0,0 +1,24 @@
1class @beta Efl.Ui.Clickable_Util {
2 methods {
3 bind_to_theme @class {
4 [[This will listen to the standard events of a theme, and emit the events on clickable
5
6 This means, widgets themselfs do not neccessarily need to listen to the theme signals. This function does this, and calls the correct clickable functions.
7 ]]
8 params {
9 object : Efl.Canvas.Layout; [[The object to listen on]]
10 clickable : Efl.Ui.Clickable; [[The object to call the clickable events on]]
11 }
12 }
13 bind_to_object @class {
14 [[This will listen to the standard events on a object, and call the correct methods on clickable
15
16 This means, widgets themselfs do not neccessarily need to listen to the events on the object. This function does this, and calls the correct clickable functions.
17 ]]
18 params {
19 object : Efl.Input.Interface; [[The object to listen on]]
20 clickable : Efl.Ui.Clickable; [[The object to call the clickable events on]]
21 }
22 }
23 }
24}
diff --git a/src/lib/elementary/efl_ui_image_zoomable.c b/src/lib/elementary/efl_ui_image_zoomable.c
index 6818cf09ad..5f8147d777 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.c
+++ b/src/lib/elementary/efl_ui_image_zoomable.c
@@ -861,7 +861,12 @@ _mouse_down_cb(void *data,
861 if (elm_widget_is_legacy(data)) 861 if (elm_widget_is_legacy(data))
862 evas_object_smart_callback_call(data, "clicked,double", NULL); 862 evas_object_smart_callback_call(data, "clicked,double", NULL);
863 else 863 else
864 efl_event_callback_call(data, EFL_UI_EVENT_CLICKED_DOUBLE, NULL); 864 {
865 Efl_Ui_Clickable_Clicked clicked;
866 clicked.repeated = 1;
867 clicked.button = 1;
868 efl_event_callback_call(data, EFL_UI_EVENT_CLICKED, &clicked);
869 }
865 } 870 }
866 else 871 else
867 efl_event_callback_legacy_call(data, EFL_UI_IMAGE_ZOOMABLE_EVENT_PRESS, NULL); 872 efl_event_callback_legacy_call(data, EFL_UI_IMAGE_ZOOMABLE_EVENT_PRESS, NULL);
diff --git a/src/lib/elementary/elm_bubble_eo.c b/src/lib/elementary/elm_bubble_eo.c
index 8b6ef3e104..4f6ee165a3 100644
--- a/src/lib/elementary/elm_bubble_eo.c
+++ b/src/lib/elementary/elm_bubble_eo.c
@@ -50,6 +50,6 @@ static const Efl_Class_Description _elm_bubble_class_desc = {
50 NULL 50 NULL
51}; 51};
52 52
53EFL_DEFINE_CLASS(elm_bubble_class_get, &_elm_bubble_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 53EFL_DEFINE_CLASS(elm_bubble_class_get, &_elm_bubble_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
54 54
55#include "elm_bubble_eo.legacy.c" 55#include "elm_bubble_eo.legacy.c"
diff --git a/src/lib/elementary/elm_colorselector_eo.c b/src/lib/elementary/elm_colorselector_eo.c
index aba3685bd4..b6b288a8cf 100644
--- a/src/lib/elementary/elm_colorselector_eo.c
+++ b/src/lib/elementary/elm_colorselector_eo.c
@@ -146,6 +146,6 @@ static const Efl_Class_Description _elm_colorselector_class_desc = {
146 NULL 146 NULL
147}; 147};
148 148
149EFL_DEFINE_CLASS(elm_colorselector_class_get, &_elm_colorselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 149EFL_DEFINE_CLASS(elm_colorselector_class_get, &_elm_colorselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
150 150
151#include "elm_colorselector_eo.legacy.c" 151#include "elm_colorselector_eo.legacy.c"
diff --git a/src/lib/elementary/elm_diskselector_eo.c b/src/lib/elementary/elm_diskselector_eo.c
index b44f2a0f9f..d533a106eb 100644
--- a/src/lib/elementary/elm_diskselector_eo.c
+++ b/src/lib/elementary/elm_diskselector_eo.c
@@ -222,6 +222,6 @@ static const Efl_Class_Description _elm_diskselector_class_desc = {
222 NULL 222 NULL
223}; 223};
224 224
225EFL_DEFINE_CLASS(elm_diskselector_class_get, &_elm_diskselector_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 225EFL_DEFINE_CLASS(elm_diskselector_class_get, &_elm_diskselector_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SCROLLABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
226 226
227#include "elm_diskselector_eo.legacy.c" 227#include "elm_diskselector_eo.legacy.c"
diff --git a/src/lib/elementary/elm_entry_eo.c b/src/lib/elementary/elm_entry_eo.c
index 09ff5794c8..110de558bc 100644
--- a/src/lib/elementary/elm_entry_eo.c
+++ b/src/lib/elementary/elm_entry_eo.c
@@ -1188,6 +1188,6 @@ static const Efl_Class_Description _elm_entry_class_desc = {
1188 NULL 1188 NULL
1189}; 1189};
1190 1190
1191EFL_DEFINE_CLASS(elm_entry_class_get, &_elm_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_TEXT_INTERFACE, EFL_ACCESS_EDITABLE_TEXT_INTERFACE, EFL_FILE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL); 1191EFL_DEFINE_CLASS(elm_entry_class_get, &_elm_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_TEXT_INTERFACE, EFL_ACCESS_EDITABLE_TEXT_INTERFACE, EFL_FILE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
1192 1192
1193#include "elm_entry_eo.legacy.c" 1193#include "elm_entry_eo.legacy.c"
diff --git a/src/lib/elementary/elm_fileselector_entry_eo.c b/src/lib/elementary/elm_fileselector_entry_eo.c
index 58c0092614..04af297c98 100644
--- a/src/lib/elementary/elm_fileselector_entry_eo.c
+++ b/src/lib/elementary/elm_fileselector_entry_eo.c
@@ -88,4 +88,4 @@ static const Efl_Class_Description _elm_fileselector_entry_class_desc = {
88 NULL 88 NULL
89}; 89};
90 90
91EFL_DEFINE_CLASS(elm_fileselector_entry_class_get, &_elm_fileselector_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 91EFL_DEFINE_CLASS(elm_fileselector_entry_class_get, &_elm_fileselector_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_fileselector_eo.c b/src/lib/elementary/elm_fileselector_eo.c
index fa3e9d6408..3ae6cd3539 100644
--- a/src/lib/elementary/elm_fileselector_eo.c
+++ b/src/lib/elementary/elm_fileselector_eo.c
@@ -202,6 +202,6 @@ static const Efl_Class_Description _elm_fileselector_class_desc = {
202 _elm_fileselector_class_destructor 202 _elm_fileselector_class_destructor
203}; 203};
204 204
205EFL_DEFINE_CLASS(elm_fileselector_class_get, &_elm_fileselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 205EFL_DEFINE_CLASS(elm_fileselector_class_get, &_elm_fileselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
206 206
207#include "elm_fileselector_eo.legacy.c" 207#include "elm_fileselector_eo.legacy.c"
diff --git a/src/lib/elementary/elm_gengrid_eo.c b/src/lib/elementary/elm_gengrid_eo.c
index 89263f9c1f..b3012a57b8 100644
--- a/src/lib/elementary/elm_gengrid_eo.c
+++ b/src/lib/elementary/elm_gengrid_eo.c
@@ -512,6 +512,6 @@ static const Efl_Class_Description _elm_gengrid_class_desc = {
512 NULL 512 NULL
513}; 513};
514 514
515EFL_DEFINE_CLASS(elm_gengrid_class_get, &_elm_gengrid_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL); 515EFL_DEFINE_CLASS(elm_gengrid_class_get, &_elm_gengrid_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
516 516
517#include "elm_gengrid_eo.legacy.c" 517#include "elm_gengrid_eo.legacy.c"
diff --git a/src/lib/elementary/elm_genlist_eo.c b/src/lib/elementary/elm_genlist_eo.c
index ca2fd5669e..fd0d5216ab 100644
--- a/src/lib/elementary/elm_genlist_eo.c
+++ b/src/lib/elementary/elm_genlist_eo.c
@@ -681,6 +681,6 @@ static const Efl_Class_Description _elm_genlist_class_desc = {
681 NULL 681 NULL
682}; 682};
683 683
684EFL_DEFINE_CLASS(elm_genlist_class_get, &_elm_genlist_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL); 684EFL_DEFINE_CLASS(elm_genlist_class_get, &_elm_genlist_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
685 685
686#include "elm_genlist_eo.legacy.c" 686#include "elm_genlist_eo.legacy.c"
diff --git a/src/lib/elementary/elm_hover_eo.c b/src/lib/elementary/elm_hover_eo.c
index 5ca798a132..b5a1b20208 100644
--- a/src/lib/elementary/elm_hover_eo.c
+++ b/src/lib/elementary/elm_hover_eo.c
@@ -92,6 +92,6 @@ static const Efl_Class_Description _elm_hover_class_desc = {
92 NULL 92 NULL
93}; 93};
94 94
95EFL_DEFINE_CLASS(elm_hover_class_get, &_elm_hover_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL); 95EFL_DEFINE_CLASS(elm_hover_class_get, &_elm_hover_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
96 96
97#include "elm_hover_eo.legacy.c" 97#include "elm_hover_eo.legacy.c"
diff --git a/src/lib/elementary/elm_hoversel_eo.c b/src/lib/elementary/elm_hoversel_eo.c
index fb108263a1..de2f5371c5 100644
--- a/src/lib/elementary/elm_hoversel_eo.c
+++ b/src/lib/elementary/elm_hoversel_eo.c
@@ -189,6 +189,6 @@ static const Efl_Class_Description _elm_hoversel_class_desc = {
189 NULL 189 NULL
190}; 190};
191 191
192EFL_DEFINE_CLASS(elm_hoversel_class_get, &_elm_hoversel_class_desc, EFL_UI_BUTTON_LEGACY_CLASS, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL); 192EFL_DEFINE_CLASS(elm_hoversel_class_get, &_elm_hoversel_class_desc, EFL_UI_BUTTON_LEGACY_CLASS, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
193 193
194#include "elm_hoversel_eo.legacy.c" 194#include "elm_hoversel_eo.legacy.c"
diff --git a/src/lib/elementary/elm_index_eo.c b/src/lib/elementary/elm_index_eo.c
index 9c935c7f92..68bd184e59 100644
--- a/src/lib/elementary/elm_index_eo.c
+++ b/src/lib/elementary/elm_index_eo.c
@@ -322,6 +322,6 @@ static const Efl_Class_Description _elm_index_class_desc = {
322 NULL 322 NULL
323}; 323};
324 324
325EFL_DEFINE_CLASS(elm_index_class_get, &_elm_index_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_DIRECTION_INTERFACE, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 325EFL_DEFINE_CLASS(elm_index_class_get, &_elm_index_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_DIRECTION_INTERFACE, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
326 326
327#include "elm_index_eo.legacy.c" 327#include "elm_index_eo.legacy.c"
diff --git a/src/lib/elementary/elm_list_eo.c b/src/lib/elementary/elm_list_eo.c
index 9668aa5e07..3da0cba750 100644
--- a/src/lib/elementary/elm_list_eo.c
+++ b/src/lib/elementary/elm_list_eo.c
@@ -363,6 +363,6 @@ static const Efl_Class_Description _elm_list_class_desc = {
363 NULL 363 NULL
364}; 364};
365 365
366EFL_DEFINE_CLASS(elm_list_class_get, &_elm_list_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL); 366EFL_DEFINE_CLASS(elm_list_class_get, &_elm_list_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
367 367
368#include "elm_list_eo.legacy.c" 368#include "elm_list_eo.legacy.c"
diff --git a/src/lib/elementary/elm_map_eo.c b/src/lib/elementary/elm_map_eo.c
index 62ed9c2861..0e522f4635 100644
--- a/src/lib/elementary/elm_map_eo.c
+++ b/src/lib/elementary/elm_map_eo.c
@@ -360,6 +360,6 @@ static const Efl_Class_Description _elm_map_class_desc = {
360 NULL 360 NULL
361}; 361};
362 362
363EFL_DEFINE_CLASS(elm_map_class_get, &_elm_map_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, EFL_UI_ZOOM_INTERFACE, NULL); 363EFL_DEFINE_CLASS(elm_map_class_get, &_elm_map_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, EFL_UI_ZOOM_INTERFACE, NULL);
364 364
365#include "elm_map_eo.legacy.c" 365#include "elm_map_eo.legacy.c"
diff --git a/src/lib/elementary/elm_menu_eo.c b/src/lib/elementary/elm_menu_eo.c
index 1bc7f988da..4aaa856be8 100644
--- a/src/lib/elementary/elm_menu_eo.c
+++ b/src/lib/elementary/elm_menu_eo.c
@@ -119,6 +119,6 @@ static const Efl_Class_Description _elm_menu_class_desc = {
119 NULL 119 NULL
120}; 120};
121 121
122EFL_DEFINE_CLASS(elm_menu_class_get, &_elm_menu_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_WIDGET_FOCUS_MANAGER_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL); 122EFL_DEFINE_CLASS(elm_menu_class_get, &_elm_menu_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_WIDGET_FOCUS_MANAGER_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
123 123
124#include "elm_menu_eo.legacy.c" 124#include "elm_menu_eo.legacy.c"
diff --git a/src/lib/elementary/elm_multibuttonentry_eo.c b/src/lib/elementary/elm_multibuttonentry_eo.c
index 24dfb7fc45..dcfb62778d 100644
--- a/src/lib/elementary/elm_multibuttonentry_eo.c
+++ b/src/lib/elementary/elm_multibuttonentry_eo.c
@@ -219,6 +219,6 @@ static const Efl_Class_Description _elm_multibuttonentry_class_desc = {
219 NULL 219 NULL
220}; 220};
221 221
222EFL_DEFINE_CLASS(elm_multibuttonentry_class_get, &_elm_multibuttonentry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 222EFL_DEFINE_CLASS(elm_multibuttonentry_class_get, &_elm_multibuttonentry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
223 223
224#include "elm_multibuttonentry_eo.legacy.c" 224#include "elm_multibuttonentry_eo.legacy.c"
diff --git a/src/lib/elementary/elm_photo_eo.c b/src/lib/elementary/elm_photo_eo.c
index 02b8a28fcf..6c49b03515 100644
--- a/src/lib/elementary/elm_photo_eo.c
+++ b/src/lib/elementary/elm_photo_eo.c
@@ -76,4 +76,4 @@ static const Efl_Class_Description _elm_photo_class_desc = {
76 NULL 76 NULL
77}; 77};
78 78
79EFL_DEFINE_CLASS(elm_photo_class_get, &_elm_photo_class_desc, EFL_UI_WIDGET_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 79EFL_DEFINE_CLASS(elm_photo_class_get, &_elm_photo_class_desc, EFL_UI_WIDGET_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_plug_eo.c b/src/lib/elementary/elm_plug_eo.c
index 7dc8c4daad..c40f883d22 100644
--- a/src/lib/elementary/elm_plug_eo.c
+++ b/src/lib/elementary/elm_plug_eo.c
@@ -54,6 +54,6 @@ static const Efl_Class_Description _elm_plug_class_desc = {
54 NULL 54 NULL
55}; 55};
56 56
57EFL_DEFINE_CLASS(elm_plug_class_get, &_elm_plug_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 57EFL_DEFINE_CLASS(elm_plug_class_get, &_elm_plug_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
58 58
59#include "elm_plug_eo.legacy.c" 59#include "elm_plug_eo.legacy.c"
diff --git a/src/lib/elementary/elm_thumb_eo.c b/src/lib/elementary/elm_thumb_eo.c
index d65f2ee700..0e57845112 100644
--- a/src/lib/elementary/elm_thumb_eo.c
+++ b/src/lib/elementary/elm_thumb_eo.c
@@ -82,4 +82,4 @@ static const Efl_Class_Description _elm_thumb_class_desc = {
82 NULL 82 NULL
83}; 83};
84 84
85EFL_DEFINE_CLASS(elm_thumb_class_get, &_elm_thumb_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL); 85EFL_DEFINE_CLASS(elm_thumb_class_get, &_elm_thumb_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
diff --git a/src/lib/elementary/elm_toolbar_eo.c b/src/lib/elementary/elm_toolbar_eo.c
index 0589b9aa71..4356aff25a 100644
--- a/src/lib/elementary/elm_toolbar_eo.c
+++ b/src/lib/elementary/elm_toolbar_eo.c
@@ -372,6 +372,6 @@ static const Efl_Class_Description _elm_toolbar_class_desc = {
372 NULL 372 NULL
373}; 373};
374 374
375EFL_DEFINE_CLASS(elm_toolbar_class_get, &_elm_toolbar_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_DIRECTION_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL); 375EFL_DEFINE_CLASS(elm_toolbar_class_get, &_elm_toolbar_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_DIRECTION_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
376 376
377#include "elm_toolbar_eo.legacy.c" 377#include "elm_toolbar_eo.legacy.c"
diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build
index 6d40ca1cde..87e1b21c43 100644
--- a/src/lib/elementary/meson.build
+++ b/src/lib/elementary/meson.build
@@ -175,6 +175,8 @@ pub_eo_files = [
175 'efl_ui_caching_factory.eo', 175 'efl_ui_caching_factory.eo',
176 'efl_ui_widget_factory.eo', 176 'efl_ui_widget_factory.eo',
177 'efl_ui_relative_layout.eo', 177 'efl_ui_relative_layout.eo',
178 'efl_ui_clickable.eo',
179 'efl_ui_clickable_util.eo',
178] 180]
179 181
180foreach eo_file : pub_eo_files 182foreach eo_file : pub_eo_files
@@ -931,7 +933,9 @@ elementary_src = [
931 'efl_ui_homogeneous_model.c', 933 'efl_ui_homogeneous_model.c',
932 'efl_ui_exact_model.c', 934 'efl_ui_exact_model.c',
933 'efl_ui_average_model.c', 935 'efl_ui_average_model.c',
934 'efl_ui_relative_layout.c' 936 'efl_ui_relative_layout.c',
937 'efl_ui_clickable.c',
938 'efl_ui_clickable_util.c',
935] 939]
936 940
937elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl] 941elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl]