summaryrefslogtreecommitdiff
path: root/src/lib/elementary
diff options
context:
space:
mode:
authorHermet Park <hermetpark@gmail.com>2019-05-20 18:56:49 +0900
committerHermet Park <hermetpark@gmail.com>2019-05-20 18:56:49 +0900
commit463e3a73fd924fe23d1f4154b15e4736026be649 (patch)
tree20b0d6aef8ca32e91806b3d2e60fc66a1f87e631 /src/lib/elementary
parent0d063171c6fb689bd363da94b5dcb2a4fce4a181 (diff)
parent1692ff3890875be579dbf953bd0ec2146497eba9 (diff)
Merge branch 'master' into devs/hermet/lottie
Diffstat (limited to 'src/lib/elementary')
-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_button.c44
-rw-r--r--src/lib/elementary/efl_ui_calendar.c2
-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_frame.c28
-rw-r--r--src/lib/elementary/efl_ui_grid.eo1
-rw-r--r--src/lib/elementary/efl_ui_image.c19
-rw-r--r--src/lib/elementary/efl_ui_image_zoomable.c35
-rw-r--r--src/lib/elementary/efl_ui_list.eo1
-rw-r--r--src/lib/elementary/efl_ui_list_view.eo2
-rw-r--r--src/lib/elementary/efl_ui_navigation_bar_part_back_button.eo2
-rw-r--r--src/lib/elementary/efl_ui_panes.c23
-rw-r--r--src/lib/elementary/efl_ui_scroll_alert_popup.c12
-rw-r--r--src/lib/elementary/efl_ui_tab_bar.eo2
-rw-r--r--src/lib/elementary/efl_ui_text.c29
-rw-r--r--src/lib/elementary/efl_ui_text_alert_popup.c12
-rw-r--r--src/lib/elementary/efl_ui_textpath.c13
-rw-r--r--src/lib/elementary/elc_combobox.c13
-rw-r--r--src/lib/elementary/elc_fileselector.c36
-rw-r--r--src/lib/elementary/elc_fileselector_button.c5
-rw-r--r--src/lib/elementary/elc_fileselector_entry.c35
-rw-r--r--src/lib/elementary/elc_hoversel.c17
-rw-r--r--src/lib/elementary/elc_multibuttonentry.c2
-rw-r--r--src/lib/elementary/elc_naviframe.c15
-rw-r--r--src/lib/elementary/elc_player.c28
-rw-r--r--src/lib/elementary/elm_bubble.c2
-rw-r--r--src/lib/elementary/elm_bubble_eo.c2
-rw-r--r--src/lib/elementary/elm_color_class.c7
-rw-r--r--src/lib/elementary/elm_colorselector.c19
-rw-r--r--src/lib/elementary/elm_colorselector_eo.c2
-rw-r--r--src/lib/elementary/elm_diskselector.c4
-rw-r--r--src/lib/elementary/elm_diskselector_eo.c2
-rw-r--r--src/lib/elementary/elm_entry.c20
-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.c12
-rw-r--r--src/lib/elementary/elm_gengrid_eo.c2
-rw-r--r--src/lib/elementary/elm_genlist.c16
-rw-r--r--src/lib/elementary/elm_genlist_eo.c2
-rw-r--r--src/lib/elementary/elm_hover.c12
-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.c6
-rw-r--r--src/lib/elementary/elm_index_eo.c2
-rw-r--r--src/lib/elementary/elm_list.c12
-rw-r--r--src/lib/elementary/elm_list_eo.c2
-rw-r--r--src/lib/elementary/elm_map.c13
-rw-r--r--src/lib/elementary/elm_map_eo.c2
-rw-r--r--src/lib/elementary/elm_menu.c4
-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_panel.c3
-rw-r--r--src/lib/elementary/elm_photo.c2
-rw-r--r--src/lib/elementary/elm_photo_eo.c2
-rw-r--r--src/lib/elementary/elm_plug.c2
-rw-r--r--src/lib/elementary/elm_plug_eo.c2
-rw-r--r--src/lib/elementary/elm_thumb.c4
-rw-r--r--src/lib/elementary/elm_thumb_eo.c2
-rw-r--r--src/lib/elementary/elm_toolbar.c6
-rw-r--r--src/lib/elementary/elm_toolbar_eo.c2
-rw-r--r--src/lib/elementary/meson.build6
66 files changed, 608 insertions, 249 deletions
diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h
index 246ebf8..34f0549 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 74d1448..a77a1bd 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_button.c b/src/lib/elementary/efl_ui_button.c
index 28bfc86..f653e94 100644
--- a/src/lib/elementary/efl_ui_button.c
+++ b/src/lib/elementary/efl_ui_button.c
@@ -6,6 +6,7 @@
6#define EFL_ACCESS_OBJECT_PROTECTED 6#define EFL_ACCESS_OBJECT_PROTECTED
7#define ELM_LAYOUT_PROTECTED 7#define ELM_LAYOUT_PROTECTED
8#define EFL_PART_PROTECTED 8#define EFL_PART_PROTECTED
9#define EFL_UI_CLICKABLE_PROTECTED
9 10
10#include <Elementary.h> 11#include <Elementary.h>
11#include "elm_priv.h" 12#include "elm_priv.h"
@@ -71,8 +72,15 @@ _activate(Evas_Object *obj)
71 _elm_access_say(E_("Clicked")); 72 _elm_access_say(E_("Clicked"));
72 if (!elm_widget_disabled_get(obj) && 73 if (!elm_widget_disabled_get(obj) &&
73 !evas_object_freeze_events_get(obj)) 74 !evas_object_freeze_events_get(obj))
74 efl_event_callback_legacy_call 75 {
75 (obj, EFL_UI_EVENT_CLICKED, NULL); 76 if (elm_widget_is_legacy(obj))
77 evas_object_smart_callback_call(obj, "clicked", NULL);
78 else
79 {
80 efl_ui_clickable_press(obj, 1);
81 efl_ui_clickable_unpress(obj, 1);
82 }
83 }
76 } 84 }
77} 85}
78 86
@@ -95,8 +103,13 @@ _efl_ui_button_efl_ui_widget_on_access_activate(Eo *obj, Efl_Ui_Button_Data *_pd
95 if (act != EFL_UI_ACTIVATE_DEFAULT) return EINA_FALSE; 103 if (act != EFL_UI_ACTIVATE_DEFAULT) return EINA_FALSE;
96 if (evas_object_freeze_events_get(obj)) return EINA_FALSE; 104 if (evas_object_freeze_events_get(obj)) return EINA_FALSE;
97 105
98 efl_event_callback_legacy_call 106 if (elm_widget_is_legacy(obj))
99 (obj, EFL_UI_EVENT_CLICKED, NULL); 107 evas_object_smart_callback_call(obj, "clicked", NULL);
108 else
109 {
110 efl_ui_clickable_press(obj, 1);
111 efl_ui_clickable_unpress(obj, 1);
112 }
100 113
101 if (elm_widget_is_legacy(obj)) 114 if (elm_widget_is_legacy(obj))
102 elm_layout_signal_emit(obj, "elm,anim,activate", "elm"); 115 elm_layout_signal_emit(obj, "elm,anim,activate", "elm");
@@ -131,8 +144,11 @@ _autorepeat_send(void *data)
131{ 144{
132 ELM_BUTTON_DATA_GET_OR_RETURN_VAL(data, sd, ECORE_CALLBACK_CANCEL); 145 ELM_BUTTON_DATA_GET_OR_RETURN_VAL(data, sd, ECORE_CALLBACK_CANCEL);
133 146
134 efl_event_callback_legacy_call 147 if (elm_widget_is_legacy(data))
135 (data, EFL_UI_EVENT_REPEATED, NULL); 148 evas_object_smart_callback_call(data, "repeated", NULL);
149 else
150 efl_event_callback_call(data, EFL_UI_AUTOREPEAT_EVENT_REPEATED, NULL);
151
136 if (!sd->repeating) 152 if (!sd->repeating)
137 { 153 {
138 sd->timer = NULL; 154 sd->timer = NULL;
@@ -172,8 +188,10 @@ _on_pressed_signal(void *data,
172 (sd->ar_initial_timeout, _autorepeat_initial_send, data); 188 (sd->ar_initial_timeout, _autorepeat_initial_send, data);
173 } 189 }
174 190
175 efl_event_callback_legacy_call 191 if (elm_widget_is_legacy(data))
176 (data, EFL_UI_EVENT_PRESSED, NULL); 192 evas_object_smart_callback_call
193 (data, "pressed", NULL);
194
177} 195}
178 196
179static void 197static void
@@ -186,8 +204,10 @@ _on_unpressed_signal(void *data,
186 204
187 ELM_SAFE_FREE(sd->timer, ecore_timer_del); 205 ELM_SAFE_FREE(sd->timer, ecore_timer_del);
188 sd->repeating = EINA_FALSE; 206 sd->repeating = EINA_FALSE;
189 efl_event_callback_legacy_call 207
190 (data, EFL_UI_EVENT_UNPRESSED, NULL); 208 if (elm_widget_is_legacy(data))
209 evas_object_smart_callback_call
210 (data, "unpressed", NULL);
191} 211}
192 212
193static char * 213static char *
@@ -234,14 +254,12 @@ _efl_ui_button_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Button_Data *_pd EINA_
234 else 254 else
235 { 255 {
236 edje_object_signal_callback_add 256 edje_object_signal_callback_add
237 (wd->resize_obj, "efl,action,click", "*",
238 _on_clicked_signal, obj);
239 edje_object_signal_callback_add
240 (wd->resize_obj, "efl,action,press", "*", 257 (wd->resize_obj, "efl,action,press", "*",
241 _on_pressed_signal, obj); 258 _on_pressed_signal, obj);
242 edje_object_signal_callback_add 259 edje_object_signal_callback_add
243 (wd->resize_obj, "efl,action,unpress", "*", 260 (wd->resize_obj, "efl,action,unpress", "*",
244 _on_unpressed_signal, obj); 261 _on_unpressed_signal, obj);
262 efl_ui_clickable_util_bind_to_theme(wd->resize_obj, obj);
245 } 263 }
246 264
247 _elm_access_object_register(obj, wd->resize_obj); 265 _elm_access_object_register(obj, wd->resize_obj);
diff --git a/src/lib/elementary/efl_ui_calendar.c b/src/lib/elementary/efl_ui_calendar.c
index eb3918d..2005661 100644
--- a/src/lib/elementary/efl_ui_calendar.c
+++ b/src/lib/elementary/efl_ui_calendar.c
@@ -462,7 +462,7 @@ _btn_create(Eo *obj, const char *style, char *part)
462 efl_ui_autorepeat_gap_timeout_set(efl_added, INTERVAL), 462 efl_ui_autorepeat_gap_timeout_set(efl_added, INTERVAL),
463 efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, 463 efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
464 _inc_dec_btn_clicked_cb, obj), 464 _inc_dec_btn_clicked_cb, obj),
465 efl_event_callback_add(efl_added, EFL_UI_EVENT_REPEATED, 465 efl_event_callback_add(efl_added, EFL_UI_AUTOREPEAT_EVENT_REPEATED,
466 _inc_dec_btn_repeated_cb, obj), 466 _inc_dec_btn_repeated_cb, obj),
467 efl_content_set(efl_part(obj, part), efl_added)); 467 efl_content_set(efl_part(obj, part), efl_added));
468} 468}
diff --git a/src/lib/elementary/efl_ui_clickable.c b/src/lib/elementary/efl_ui_clickable.c
new file mode 100644
index 0000000..ced9609
--- /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 0000000..de3a3e4
--- /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 0000000..b11e0c5
--- /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 0000000..5f009e2
--- /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_frame.c b/src/lib/elementary/efl_ui_frame.c
index 664a542..fd9420d 100644
--- a/src/lib/elementary/efl_ui_frame.c
+++ b/src/lib/elementary/efl_ui_frame.c
@@ -5,6 +5,7 @@
5#define EFL_ACCESS_OBJECT_PROTECTED 5#define EFL_ACCESS_OBJECT_PROTECTED
6#define ELM_LAYOUT_PROTECTED 6#define ELM_LAYOUT_PROTECTED
7#define EFL_PART_PROTECTED 7#define EFL_PART_PROTECTED
8#define EFL_UI_CLICKABLE_PROTECTED
8 9
9#include <Elementary.h> 10#include <Elementary.h>
10#include "elm_priv.h" 11#include "elm_priv.h"
@@ -87,8 +88,7 @@ _on_frame_clicked(void *data,
87 sd->anim = EINA_TRUE; 88 sd->anim = EINA_TRUE;
88 elm_widget_tree_unfocusable_set(data, sd->collapsed); 89 elm_widget_tree_unfocusable_set(data, sd->collapsed);
89 } 90 }
90 efl_event_callback_legacy_call 91 evas_object_smart_callback_call(data, "clicked", NULL);
91 (data, EFL_UI_EVENT_CLICKED, NULL);
92} 92}
93 93
94/* using deferred sizing evaluation, just like the parent */ 94/* using deferred sizing evaluation, just like the parent */
@@ -105,6 +105,25 @@ _efl_ui_frame_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Frame_Data *sd)
105 } 105 }
106} 106}
107 107
108static void
109_clicked_cb(void *data, const Efl_Event *ev EINA_UNUSED)
110{
111 EFL_UI_FRAME_DATA_GET(data, sd);
112 ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
113
114 if (sd->anim) return;
115
116 if (sd->collapsible)
117 {
118 efl_event_callback_add(wd->resize_obj, EFL_LAYOUT_EVENT_RECALC, _recalc, data);
119 elm_layout_signal_emit(data, "efl,action,toggle", "efl");
120
121 sd->collapsed++;
122 sd->anim = EINA_TRUE;
123 elm_widget_tree_unfocusable_set(data, sd->collapsed);
124 }
125}
126
108EOLIAN static void 127EOLIAN static void
109_efl_ui_frame_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Frame_Data *_pd EINA_UNUSED) 128_efl_ui_frame_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Frame_Data *_pd EINA_UNUSED)
110{ 129{
@@ -128,9 +147,8 @@ _efl_ui_frame_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Frame_Data *_pd EINA_UN
128 edje_object_signal_callback_add 147 edje_object_signal_callback_add
129 (wd->resize_obj, "efl,anim,done", "efl", 148 (wd->resize_obj, "efl,anim,done", "efl",
130 _on_recalc_done, obj); 149 _on_recalc_done, obj);
131 edje_object_signal_callback_add 150 efl_ui_clickable_util_bind_to_theme(wd->resize_obj, obj);
132 (wd->resize_obj, "efl,action,click", "efl", 151 efl_event_callback_add(obj, EFL_UI_EVENT_CLICKED, _clicked_cb, obj);
133 _on_frame_clicked, obj);
134 } 152 }
135 153
136 elm_widget_can_focus_set(obj, EINA_FALSE); 154 elm_widget_can_focus_set(obj, EINA_FALSE);
diff --git a/src/lib/elementary/efl_ui_grid.eo b/src/lib/elementary/efl_ui_grid.eo
index 54de96d..a07aa82 100644
--- a/src/lib/elementary/efl_ui_grid.eo
+++ b/src/lib/elementary/efl_ui_grid.eo
@@ -5,7 +5,6 @@ class @beta Efl.Ui.Grid extends Efl.Ui.Layout_Base implements
5 Efl.Ui.Scrollbar, 5 Efl.Ui.Scrollbar,
6 Efl.Pack_Linear, Efl.Pack_Layout, 6 Efl.Pack_Linear, Efl.Pack_Layout,
7 Efl.Ui.Direction, 7 Efl.Ui.Direction,
8 Efl.Ui.Clickable,
9 Efl.Ui.Selectable, 8 Efl.Ui.Selectable,
10 Efl.Ui.Multi_Selectable, 9 Efl.Ui.Multi_Selectable,
11 Efl.Gfx.Arrangement 10 Efl.Gfx.Arrangement
diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c
index 166db8d..8fde088 100644
--- a/src/lib/elementary/efl_ui_image.c
+++ b/src/lib/elementary/efl_ui_image.c
@@ -7,6 +7,7 @@
7#define EFL_ACCESS_COMPONENT_PROTECTED 7#define EFL_ACCESS_COMPONENT_PROTECTED
8#define EFL_ACCESS_WIDGET_ACTION_PROTECTED 8#define EFL_ACCESS_WIDGET_ACTION_PROTECTED
9#define EFL_LAYOUT_CALC_PROTECTED 9#define EFL_LAYOUT_CALC_PROTECTED
10#define EFL_UI_CLICKABLE_PROTECTED
10 11
11#include <Elementary.h> 12#include <Elementary.h>
12 13
@@ -120,7 +121,7 @@ _on_mouse_up(void *data,
120 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; 121 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
121 if (!wd->still_in) return; 122 if (!wd->still_in) return;
122 123
123 efl_event_callback_legacy_call(data, EFL_UI_EVENT_CLICKED, NULL); 124 evas_object_smart_callback_call(data, "clicked", NULL);
124} 125}
125 126
126static Eina_Bool 127static Eina_Bool
@@ -575,8 +576,15 @@ _efl_ui_image_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Data *priv)
575 evas_object_show(priv->hit_rect); 576 evas_object_show(priv->hit_rect);
576 evas_object_repeat_events_set(priv->hit_rect, EINA_TRUE); 577 evas_object_repeat_events_set(priv->hit_rect, EINA_TRUE);
577 578
578 evas_object_event_callback_add 579 if (elm_widget_is_legacy(obj))
579 (priv->hit_rect, EVAS_CALLBACK_MOUSE_UP, _on_mouse_up, obj); 580 {
581 evas_object_event_callback_add
582 (priv->hit_rect, EVAS_CALLBACK_MOUSE_UP, _on_mouse_up, obj);
583 }
584 else
585 {
586 efl_ui_clickable_util_bind_to_object(priv->hit_rect, obj);
587 }
580 588
581 priv->smooth = EINA_TRUE; 589 priv->smooth = EINA_TRUE;
582 priv->fill_inside = EINA_TRUE; 590 priv->fill_inside = EINA_TRUE;
@@ -735,7 +743,10 @@ _efl_ui_image_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Image_Data *sd EINA_UNUS
735static Eina_Bool 743static Eina_Bool
736_key_action_activate(Evas_Object *obj, const char *params EINA_UNUSED) 744_key_action_activate(Evas_Object *obj, const char *params EINA_UNUSED)
737{ 745{
738 efl_event_callback_legacy_call(obj, EFL_UI_EVENT_CLICKED, NULL); 746 if (elm_widget_is_legacy(obj))
747 evas_object_smart_callback_call(obj, "clicked", NULL);
748 else
749 efl_event_callback_call(obj, EFL_UI_EVENT_CLICKED, NULL);
739 return EINA_TRUE; 750 return EINA_TRUE;
740} 751}
741 752
diff --git a/src/lib/elementary/efl_ui_image_zoomable.c b/src/lib/elementary/efl_ui_image_zoomable.c
index 0fe2bd8..f8c3f4a 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.c
+++ b/src/lib/elementary/efl_ui_image_zoomable.c
@@ -6,6 +6,7 @@
6#define EFL_ACCESS_WIDGET_ACTION_PROTECTED 6#define EFL_ACCESS_WIDGET_ACTION_PROTECTED
7#define EFL_UI_SCROLL_MANAGER_PROTECTED 7#define EFL_UI_SCROLL_MANAGER_PROTECTED
8#define EFL_UI_SCROLLBAR_PROTECTED 8#define EFL_UI_SCROLLBAR_PROTECTED
9#define EFL_UI_CLICKABLE_PROTECTED
9 10
10#include <Elementary.h> 11#include <Elementary.h>
11 12
@@ -830,19 +831,6 @@ _zoom_anim_cb(void *data, const Efl_Event *event EINA_UNUSED)
830 } 831 }
831} 832}
832 833
833static Eina_Bool
834_long_press_cb(void *data)
835{
836 EFL_UI_IMAGE_ZOOMABLE_DATA_GET(data, sd);
837
838 sd->long_timer = NULL;
839 sd->longpressed = EINA_TRUE;
840 efl_event_callback_legacy_call
841 (data, EFL_UI_EVENT_LONGPRESSED, NULL);
842
843 return ECORE_CALLBACK_CANCEL;
844}
845
846static void 834static void
847_mouse_down_cb(void *data, 835_mouse_down_cb(void *data,
848 Evas *evas EINA_UNUSED, 836 Evas *evas EINA_UNUSED,
@@ -856,15 +844,14 @@ _mouse_down_cb(void *data,
856 if (ev->button != 1) return; 844 if (ev->button != 1) return;
857 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE; 845 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE;
858 else sd->on_hold = EINA_FALSE; 846 else sd->on_hold = EINA_FALSE;
847
859 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) 848 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
860 efl_event_callback_legacy_call 849 {
861 (data, EFL_UI_EVENT_CLICKED_DOUBLE, NULL); 850 if (elm_widget_is_legacy(data))
851 evas_object_smart_callback_call(data, "clicked,double", NULL);
852 }
862 else 853 else
863 efl_event_callback_legacy_call(data, EFL_UI_IMAGE_ZOOMABLE_EVENT_PRESS, NULL); 854 efl_event_callback_legacy_call(data, EFL_UI_IMAGE_ZOOMABLE_EVENT_PRESS, NULL);
864 sd->longpressed = EINA_FALSE;
865 ecore_timer_del(sd->long_timer);
866 sd->long_timer = ecore_timer_add
867 (_elm_config->longpress_timeout, _long_press_cb, data);
868} 855}
869 856
870static void 857static void
@@ -880,10 +867,12 @@ _mouse_up_cb(void *data,
880 if (ev->button != 1) return; 867 if (ev->button != 1) return;
881 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE; 868 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE;
882 else sd->on_hold = EINA_FALSE; 869 else sd->on_hold = EINA_FALSE;
883 ELM_SAFE_FREE(sd->long_timer, ecore_timer_del); 870
884 if (!sd->on_hold) 871 if (!sd->on_hold)
885 efl_event_callback_legacy_call 872 {
886 (data, EFL_UI_EVENT_CLICKED, NULL); 873 if (elm_widget_is_legacy(data))
874 evas_object_smart_callback_call(data, "clicked", NULL);
875 }
887 sd->on_hold = EINA_FALSE; 876 sd->on_hold = EINA_FALSE;
888} 877}
889 878
@@ -1876,6 +1865,7 @@ _efl_ui_image_zoomable_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Zoomable
1876 (priv->img, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, obj); 1865 (priv->img, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, obj);
1877 evas_object_event_callback_add 1866 evas_object_event_callback_add
1878 (priv->img, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, obj); 1867 (priv->img, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, obj);
1868 efl_ui_clickable_util_bind_to_object(priv->img, obj);
1879 evas_object_image_scale_hint_set(priv->img, EVAS_IMAGE_SCALE_HINT_STATIC); 1869 evas_object_image_scale_hint_set(priv->img, EVAS_IMAGE_SCALE_HINT_STATIC);
1880 1870
1881 /* XXX: mmm... */ 1871 /* XXX: mmm... */
@@ -1924,7 +1914,6 @@ _efl_ui_image_zoomable_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Image_Zoomable
1924 eina_stringshare_del(sd->file); 1914 eina_stringshare_del(sd->file);
1925 ecore_job_del(sd->calc_job); 1915 ecore_job_del(sd->calc_job);
1926 ecore_timer_del(sd->scr_timer); 1916 ecore_timer_del(sd->scr_timer);
1927 ecore_timer_del(sd->long_timer);
1928 efl_event_callback_del(obj, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _zoom_anim_cb, obj); 1917 efl_event_callback_del(obj, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _zoom_anim_cb, obj);
1929 efl_event_callback_del(obj, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _bounce_eval, obj); 1918 efl_event_callback_del(obj, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _bounce_eval, obj);
1930 efl_event_callback_del(obj, EFL_UI_EVENT_SCROLL, _scroll_cb, obj); 1919 efl_event_callback_del(obj, EFL_UI_EVENT_SCROLL, _scroll_cb, obj);
diff --git a/src/lib/elementary/efl_ui_list.eo b/src/lib/elementary/efl_ui_list.eo
index d09288e..08e6478 100644
--- a/src/lib/elementary/efl_ui_list.eo
+++ b/src/lib/elementary/efl_ui_list.eo
@@ -4,7 +4,6 @@ class @beta Efl.Ui.List extends Efl.Ui.Layout_Base implements
4 Efl.Ui.Scrollable_Interactive, 4 Efl.Ui.Scrollable_Interactive,
5 Efl.Ui.Scrollbar, 5 Efl.Ui.Scrollbar,
6 Efl.Pack_Linear, Efl.Pack_Layout, 6 Efl.Pack_Linear, Efl.Pack_Layout,
7 Efl.Ui.Clickable,
8 Efl.Ui.Selectable, 7 Efl.Ui.Selectable,
9 Efl.Ui.Multi_Selectable, 8 Efl.Ui.Multi_Selectable,
10 Efl.Gfx.Arrangement 9 Efl.Gfx.Arrangement
diff --git a/src/lib/elementary/efl_ui_list_view.eo b/src/lib/elementary/efl_ui_list_view.eo
index f963fd3..613c38d 100644
--- a/src/lib/elementary/efl_ui_list_view.eo
+++ b/src/lib/elementary/efl_ui_list_view.eo
@@ -8,7 +8,7 @@ struct @beta Efl.Ui.List_View_Item_Event
8} 8}
9class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar, 9class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar,
10 Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub, 10 Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub,
11 Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager 11 Efl.Ui.Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager
12{ 12{
13 methods { 13 methods {
14 @property homogeneous { 14 @property homogeneous {
diff --git a/src/lib/elementary/efl_ui_navigation_bar_part_back_button.eo b/src/lib/elementary/efl_ui_navigation_bar_part_back_button.eo
index 2ed99a1..1690a54 100644
--- a/src/lib/elementary/efl_ui_navigation_bar_part_back_button.eo
+++ b/src/lib/elementary/efl_ui_navigation_bar_part_back_button.eo
@@ -1,4 +1,4 @@
1class @beta Efl.Ui.Navigation_Bar_Part_Back_Button extends Efl.Ui.Layout_Part implements Efl.Ui.Clickable, Efl.Gfx.Entity, Efl.Text, Efl.Content 1class @beta Efl.Ui.Navigation_Bar_Part_Back_Button extends Efl.Ui.Layout_Part implements Efl.Gfx.Entity, Efl.Text, Efl.Content
2{ 2{
3 [[Efl Ui Navigation_Bar internal part back button class]] 3 [[Efl Ui Navigation_Bar internal part back button class]]
4 data: null; 4 data: null;
diff --git a/src/lib/elementary/efl_ui_panes.c b/src/lib/elementary/efl_ui_panes.c
index d42b3eb..fe3ed5c 100644
--- a/src/lib/elementary/efl_ui_panes.c
+++ b/src/lib/elementary/efl_ui_panes.c
@@ -6,6 +6,7 @@
6#define ELM_LAYOUT_PROTECTED 6#define ELM_LAYOUT_PROTECTED
7#define EFL_GFX_HINT_PROTECTED 7#define EFL_GFX_HINT_PROTECTED
8#define EFL_PART_PROTECTED 8#define EFL_PART_PROTECTED
9#define EFL_UI_CLICKABLE_PROTECTED
9 10
10#include <Elementary.h> 11#include <Elementary.h>
11 12
@@ -162,7 +163,7 @@ _on_clicked(void *data,
162 const char *emission EINA_UNUSED, 163 const char *emission EINA_UNUSED,
163 const char *source EINA_UNUSED) 164 const char *source EINA_UNUSED)
164{ 165{
165 efl_event_callback_legacy_call(data, EFL_UI_EVENT_CLICKED, NULL); 166 evas_object_smart_callback_call(data, "clicked", NULL);
166} 167}
167 168
168static void 169static void
@@ -183,6 +184,7 @@ _on_pressed(void *data,
183 const char *source EINA_UNUSED) 184 const char *source EINA_UNUSED)
184{ 185{
185 efl_event_callback_legacy_call(data, ELM_PANES_EVENT_PRESS, NULL); 186 efl_event_callback_legacy_call(data, ELM_PANES_EVENT_PRESS, NULL);
187 efl_ui_clickable_press(data, 1);
186} 188}
187 189
188static void 190static void
@@ -193,10 +195,10 @@ _on_unpressed(void *data,
193{ 195{
194 EFL_UI_PANES_DATA_GET(data, sd); 196 EFL_UI_PANES_DATA_GET(data, sd);
195 efl_event_callback_legacy_call(data, ELM_PANES_EVENT_UNPRESS, NULL); 197 efl_event_callback_legacy_call(data, ELM_PANES_EVENT_UNPRESS, NULL);
196 198 efl_ui_clickable_unpress(data, 1);
197 if (sd->double_clicked) 199 if (sd->double_clicked)
198 { 200 {
199 efl_event_callback_legacy_call(data, EFL_UI_EVENT_CLICKED_DOUBLE, NULL); 201 evas_object_smart_callback_call(data, "clicked,double", NULL);
200 sd->double_clicked = EINA_FALSE; 202 sd->double_clicked = EINA_FALSE;
201 } 203 }
202} 204}
@@ -437,18 +439,7 @@ _efl_ui_panes_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Panes_Data *_pd EINA_UN
437 } 439 }
438 else 440 else
439 { 441 {
440 edje_object_signal_callback_add 442 efl_ui_clickable_util_bind_to_theme(wd->resize_obj, obj);
441 (wd->resize_obj, "efl,action,click", "*",
442 _on_clicked, obj);
443 edje_object_signal_callback_add
444 (wd->resize_obj, "efl,action,click,double", "*",
445 _double_clicked, obj);
446 edje_object_signal_callback_add
447 (wd->resize_obj, "efl,action,press", "*",
448 _on_pressed, obj);
449 edje_object_signal_callback_add
450 (wd->resize_obj, "efl,action,unpress", "*",
451 _on_unpressed, obj);
452 } 443 }
453 evas_object_event_callback_add 444 evas_object_event_callback_add
454 (wd->resize_obj, EVAS_CALLBACK_RESIZE, 445 (wd->resize_obj, EVAS_CALLBACK_RESIZE,
@@ -620,7 +611,7 @@ _part_is_efl_ui_panes_part(const Eo *obj, const char *part)
620 if ((eina_streq(part, "elm.swallow.left")) || (eina_streq(part, "elm.swallow.right"))) 611 if ((eina_streq(part, "elm.swallow.left")) || (eina_streq(part, "elm.swallow.right")))
621 return EINA_TRUE; 612 return EINA_TRUE;
622 } 613 }
623 614
624 return (eina_streq(part, "first")) || (eina_streq(part, "second")); 615 return (eina_streq(part, "first")) || (eina_streq(part, "second"));
625} 616}
626 617
diff --git a/src/lib/elementary/efl_ui_scroll_alert_popup.c b/src/lib/elementary/efl_ui_scroll_alert_popup.c
index 54e28c5..3ea05b1 100644
--- a/src/lib/elementary/efl_ui_scroll_alert_popup.c
+++ b/src/lib/elementary/efl_ui_scroll_alert_popup.c
@@ -282,7 +282,17 @@ _efl_ui_scroll_alert_popup_efl_object_constructor(Eo *obj,
282 282
283/* Efl.Part begin */ 283/* Efl.Part begin */
284 284
285ELM_PART_OVERRIDE(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data) 285static Eina_Bool
286_part_is_efl_ui_scroll_alert_popup_part(const Eo *obj EINA_UNUSED, const char *part)
287{
288 //Use Efl.Ui.Widget's "background" and "shadow" parts
289 if (eina_streq(part, "background") || eina_streq(part, "shadow"))
290 return EINA_FALSE;
291
292 return EINA_TRUE;
293}
294
295ELM_PART_OVERRIDE_PARTIAL(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data, _part_is_efl_ui_scroll_alert_popup_part)
286ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data) 296ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data)
287ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data) 297ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data)
288ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data) 298ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_scroll_alert_popup, EFL_UI_SCROLL_ALERT_POPUP, Efl_Ui_Scroll_Alert_Popup_Data)
diff --git a/src/lib/elementary/efl_ui_tab_bar.eo b/src/lib/elementary/efl_ui_tab_bar.eo
index e83401b..c0be2aa 100644
--- a/src/lib/elementary/efl_ui_tab_bar.eo
+++ b/src/lib/elementary/efl_ui_tab_bar.eo
@@ -1,4 +1,4 @@
1class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Clickable 1class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base
2{ 2{
3 [[Tab Bar class]] 3 [[Tab Bar class]]
4 methods { 4 methods {
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index b92df12..87f2ca5 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -7,6 +7,7 @@
7#define EFL_ACCESS_EDITABLE_TEXT_PROTECTED 7#define EFL_ACCESS_EDITABLE_TEXT_PROTECTED
8#define ELM_LAYOUT_PROTECTED 8#define ELM_LAYOUT_PROTECTED
9#define EFL_PART_PROTECTED 9#define EFL_PART_PROTECTED
10#define EFL_UI_CLICKABLE_PROTECTED
10 11
11#include <Elementary.h> 12#include <Elementary.h>
12#include <Elementary_Cursor.h> 13#include <Elementary_Cursor.h>
@@ -1412,8 +1413,8 @@ _menu_call(Evas_Object *obj)
1412 } 1413 }
1413} 1414}
1414 1415
1415static Eina_Bool 1416static void
1416_long_press_cb(void *data) 1417_long_press_cb(void *data, const Efl_Event *ev EINA_UNUSED)
1417{ 1418{
1418 EFL_UI_TEXT_DATA_GET(data, sd); 1419 EFL_UI_TEXT_DATA_GET(data, sd);
1419 1420
@@ -1427,8 +1428,6 @@ _long_press_cb(void *data)
1427 1428
1428 sd->longpress_timer = NULL; 1429 sd->longpress_timer = NULL;
1429 efl_event_callback_call(data, EFL_UI_EVENT_LONGPRESSED, NULL); 1430 efl_event_callback_call(data, EFL_UI_EVENT_LONGPRESSED, NULL);
1430
1431 return ECORE_CALLBACK_CANCEL;
1432} 1431}
1433 1432
1434static void 1433static void
@@ -1495,15 +1494,9 @@ _mouse_down_cb(void *data,
1495 sd->downy = ev->canvas.y; 1494 sd->downy = ev->canvas.y;
1496 sd->long_pressed = EINA_FALSE; 1495 sd->long_pressed = EINA_FALSE;
1497 1496
1498 if (ev->button == 1)
1499 {
1500 ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del);
1501 sd->longpress_timer = ecore_timer_add
1502 (_elm_config->longpress_timeout, _long_press_cb, data);
1503 }
1504 /* If right button is pressed and context menu disabled is true, 1497 /* If right button is pressed and context menu disabled is true,
1505 * then only context menu will appear */ 1498 * then only context menu will appear */
1506 else if (ev->button == 3 && (!_elm_config->context_menu_disabled)) 1499 if (ev->button == 3 && (!_elm_config->context_menu_disabled))
1507 { 1500 {
1508 if (_elm_config->desktop_entry) 1501 if (_elm_config->desktop_entry)
1509 { 1502 {
@@ -2126,6 +2119,7 @@ _efl_ui_text_efl_object_constructor(Eo *obj, Efl_Ui_Text_Data *sd)
2126 if (!elm_widget_theme_klass_get(obj)) 2119 if (!elm_widget_theme_klass_get(obj))
2127 elm_widget_theme_klass_set(obj, "text"); 2120 elm_widget_theme_klass_set(obj, "text");
2128 obj = efl_constructor(efl_super(obj, MY_CLASS)); 2121 obj = efl_constructor(efl_super(obj, MY_CLASS));
2122 efl_event_callback_add(obj, EFL_UI_EVENT_LONGPRESSED, _long_press_cb, obj);
2129 2123
2130 text_obj = efl_add(EFL_UI_INTERNAL_TEXT_INTERACTIVE_CLASS, obj); 2124 text_obj = efl_add(EFL_UI_INTERNAL_TEXT_INTERACTIVE_CLASS, obj);
2131 efl_event_callback_forwarder_add(text_obj, EFL_UI_TEXT_EVENT_CHANGED_USER, obj); 2125 efl_event_callback_forwarder_add(text_obj, EFL_UI_TEXT_EVENT_CHANGED_USER, obj);
@@ -2215,6 +2209,7 @@ _efl_ui_text_efl_object_finalize(Eo *obj,
2215 (sd->entry_edje, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, obj); 2209 (sd->entry_edje, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, obj);
2216 evas_object_event_callback_add 2210 evas_object_event_callback_add
2217 (sd->entry_edje, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, obj); 2211 (sd->entry_edje, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, obj);
2212 efl_ui_clickable_util_bind_to_object(sd->entry_edje, obj);
2218 2213
2219 efl_event_callback_add(obj, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, 2214 efl_event_callback_add(obj, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED,
2220 _text_size_changed_cb, obj); 2215 _text_size_changed_cb, obj);
@@ -4059,7 +4054,17 @@ _efl_ui_text_text_get(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *pd,
4059 4054
4060#undef STRCMP 4055#undef STRCMP
4061 4056
4062ELM_PART_OVERRIDE(efl_ui_text, EFL_UI_TEXT, Efl_Ui_Text_Data) 4057static Eina_Bool
4058_part_is_efl_ui_text_part(const Eo *obj EINA_UNUSED, const char *part)
4059{
4060 //Use Efl.Ui.Widget's "background" and "shadow" parts
4061 if (eina_streq(part, "background") || eina_streq(part, "shadow"))
4062 return EINA_FALSE;
4063
4064 return EINA_TRUE;
4065}
4066
4067ELM_PART_OVERRIDE_PARTIAL(efl_ui_text, EFL_UI_TEXT, Efl_Ui_Text_Data, _part_is_efl_ui_text_part)
4063ELM_PART_OVERRIDE_TEXT_SET(efl_ui_text, EFL_UI_TEXT, Efl_Ui_Text_Data) 4068ELM_PART_OVERRIDE_TEXT_SET(efl_ui_text, EFL_UI_TEXT, Efl_Ui_Text_Data)
4064ELM_PART_OVERRIDE_TEXT_GET(efl_ui_text, EFL_UI_TEXT, Efl_Ui_Text_Data) 4069ELM_PART_OVERRIDE_TEXT_GET(efl_ui_text, EFL_UI_TEXT, Efl_Ui_Text_Data)
4065#include "efl_ui_text_part.eo.c" 4070#include "efl_ui_text_part.eo.c"
diff --git a/src/lib/elementary/efl_ui_text_alert_popup.c b/src/lib/elementary/efl_ui_text_alert_popup.c
index 355b8c2..230328d 100644
--- a/src/lib/elementary/efl_ui_text_alert_popup.c
+++ b/src/lib/elementary/efl_ui_text_alert_popup.c
@@ -290,7 +290,17 @@ _efl_ui_text_alert_popup_efl_object_constructor(Eo *obj,
290 290
291/* Efl.Part begin */ 291/* Efl.Part begin */
292 292
293ELM_PART_OVERRIDE(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data) 293static Eina_Bool
294_part_is_efl_ui_text_alert_popup_part(const Eo *obj EINA_UNUSED, const char *part)
295{
296 //Use Efl.Ui.Widget's "background" and "shadow" parts
297 if (eina_streq(part, "background") || eina_streq(part, "shadow"))
298 return EINA_FALSE;
299
300 return EINA_TRUE;
301}
302
303ELM_PART_OVERRIDE_PARTIAL(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data, _part_is_efl_ui_text_alert_popup_part)
294ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data) 304ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data)
295ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data) 305ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data)
296ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data) 306ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_text_alert_popup, EFL_UI_TEXT_ALERT_POPUP, Efl_Ui_Text_Alert_Popup_Data)
diff --git a/src/lib/elementary/efl_ui_textpath.c b/src/lib/elementary/efl_ui_textpath.c
index 593339c..1016560 100644
--- a/src/lib/elementary/efl_ui_textpath.c
+++ b/src/lib/elementary/efl_ui_textpath.c
@@ -748,7 +748,18 @@ _efl_ui_textpath_ellipsis_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textpath_Data *p
748} 748}
749 749
750/* Efl.Part begin */ 750/* Efl.Part begin */
751ELM_PART_OVERRIDE(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data) 751
752static Eina_Bool
753_part_is_efl_ui_textpath_part(const Eo *obj EINA_UNUSED, const char *part)
754{
755 //Use Efl.Ui.Widget's "background" and "shadow" parts
756 if (eina_streq(part, "background") || eina_streq(part, "shadow"))
757 return EINA_FALSE;
758
759 return EINA_TRUE;
760}
761
762ELM_PART_OVERRIDE_PARTIAL(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data, _part_is_efl_ui_textpath_part)
752ELM_PART_OVERRIDE_TEXT_SET(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data) 763ELM_PART_OVERRIDE_TEXT_SET(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data)
753ELM_PART_OVERRIDE_TEXT_GET(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data) 764ELM_PART_OVERRIDE_TEXT_GET(efl_ui_textpath, EFL_UI_TEXTPATH, Efl_Ui_Textpath_Data)
754#include "efl_ui_textpath_part.eo.c" 765#include "efl_ui_textpath_part.eo.c"
diff --git a/src/lib/elementary/elc_combobox.c b/src/lib/elementary/elc_combobox.c
index 2318fe7..15bf664 100644
--- a/src/lib/elementary/elc_combobox.c
+++ b/src/lib/elementary/elc_combobox.c
@@ -121,11 +121,11 @@ _elm_combobox_efl_ui_widget_theme_apply(Eo *obj, Elm_Combobox_Data *sd)
121} 121}
122 122
123static void 123static void
124_on_hover_clicked(void *data, const Efl_Event *event) 124_on_hover_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
125{ 125{
126 const char *dismissstr; 126 const char *dismissstr;
127 127
128 dismissstr = elm_layout_data_get(event->object, "dismiss"); 128 dismissstr = elm_layout_data_get(obj, "dismiss");
129 129
130 if (!dismissstr || strcmp(dismissstr, "on")) 130 if (!dismissstr || strcmp(dismissstr, "on"))
131 elm_combobox_hover_end(data); // for backward compatibility 131 elm_combobox_hover_end(data); // for backward compatibility
@@ -303,7 +303,7 @@ _on_changed(void *data, const Efl_Event *event EINA_UNUSED)
303} 303}
304 304
305static void 305static void
306_on_clicked(void *data, const Efl_Event *event EINA_UNUSED) 306_on_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
307{ 307{
308 elm_combobox_hover_begin(data); 308 elm_combobox_hover_begin(data);
309} 309}
@@ -334,7 +334,7 @@ _elm_combobox_efl_canvas_group_group_add(Eo *obj, Elm_Combobox_Data *sd EINA_UNU
334 334
335 efl_ui_mirrored_automatic_set(obj, EINA_FALSE); 335 efl_ui_mirrored_automatic_set(obj, EINA_FALSE);
336 336
337 efl_event_callback_add(obj, EFL_UI_EVENT_CLICKED, _on_clicked, obj); 337 evas_object_smart_callback_add(obj, "clicked", _on_clicked, obj);
338 338
339 //What are you doing here? 339 //What are you doing here?
340 efl_ui_widget_theme_apply(obj); 340 efl_ui_widget_theme_apply(obj);
@@ -410,8 +410,7 @@ _elm_combobox_efl_object_constructor(Eo *obj, Elm_Combobox_Data *sd)
410 elm_hover_target_set(sd->hover, obj); 410 elm_hover_target_set(sd->hover, obj);
411 elm_widget_sub_object_add(obj, sd->hover); 411 elm_widget_sub_object_add(obj, sd->hover);
412 412
413 efl_event_callback_add 413 evas_object_smart_callback_add(sd->hover, "clicked", _on_hover_clicked, obj);
414 (sd->hover, EFL_UI_EVENT_CLICKED, _on_hover_clicked, obj);
415 elm_layout_signal_callback_add 414 elm_layout_signal_callback_add
416 (sd->hover, "elm,action,hide,finished", "elm", _hover_end_finished, obj); 415 (sd->hover, "elm,action,hide,finished", "elm", _hover_end_finished, obj);
417 416
@@ -530,7 +529,7 @@ _key_action_activate(Evas_Object *obj, const char *params EINA_UNUSED)
530 elm_combobox_hover_begin(obj); 529 elm_combobox_hover_begin(obj);
531 else 530 else
532 { 531 {
533 efl_event_callback_legacy_call(sd->genlist, EFL_UI_EVENT_PRESSED, sd->item); 532 evas_object_smart_callback_call(sd->genlist, "pressed", sd->item);
534 elm_entry_cursor_end_set(sd->entry); 533 elm_entry_cursor_end_set(sd->entry);
535 } 534 }
536 return EINA_TRUE; 535 return EINA_TRUE;
diff --git a/src/lib/elementary/elc_fileselector.c b/src/lib/elementary/elc_fileselector.c
index 4ebf9cc..7056389 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -81,9 +81,9 @@ static const Elm_Action key_actions[] = {
81 {NULL, NULL} 81 {NULL, NULL}
82}; 82};
83 83
84static void _ok(void *data, const Efl_Event *event); 84static void _ok(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
85static void _canc(void *data, const Efl_Event *event); 85static void _canc(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
86static void _on_dir_up(void *data, const Efl_Event *event); 86static void _on_dir_up(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
87static void _populate(Evas_Object *obj, Efl_Model *model, Elm_Object_Item *parent_it, Efl_Model *selected); 87static void _populate(Evas_Object *obj, Efl_Model *model, Elm_Object_Item *parent_it, Efl_Model *selected);
88static Elm_Fileselector_Item_Data *_selected_item_data_get(Elm_Fileselector_Data *sd); 88static Elm_Fileselector_Item_Data *_selected_item_data_get(Elm_Fileselector_Data *sd);
89 89
@@ -376,16 +376,14 @@ _elm_fileselector_efl_ui_widget_theme_apply(Eo *obj, Elm_Fileselector_Data *sd)
376static Eina_Bool 376static Eina_Bool
377_key_action_select(Evas_Object *obj, const char *params EINA_UNUSED) 377_key_action_select(Evas_Object *obj, const char *params EINA_UNUSED)
378{ 378{
379 Efl_Event event = {}; 379 _ok(obj, NULL, NULL);
380 _ok(obj, &event);
381 return EINA_TRUE; 380 return EINA_TRUE;
382} 381}
383 382
384static Eina_Bool 383static Eina_Bool
385_key_action_escape(Evas_Object *obj, const char *params EINA_UNUSED) 384_key_action_escape(Evas_Object *obj, const char *params EINA_UNUSED)
386{ 385{
387 Efl_Event event = {}; 386 _canc(obj, NULL, NULL);
388 _canc(obj, &event);
389 return EINA_TRUE; 387 return EINA_TRUE;
390} 388}
391 389
@@ -403,7 +401,7 @@ _key_action_backspace(Evas_Object *obj, const char *params EINA_UNUSED)
403 efl_unref(tmp); 401 efl_unref(tmp);
404 } 402 }
405 else 403 else
406 _on_dir_up(obj, NULL); 404 _on_dir_up(obj, NULL, NULL);
407 405
408 return EINA_TRUE; 406 return EINA_TRUE;
409} 407}
@@ -1311,7 +1309,7 @@ _on_item_unselected(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
1311} 1309}
1312 1310
1313static void 1311static void
1314_on_dir_up(void *data, const Efl_Event *event EINA_UNUSED) 1312_on_dir_up(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1315{ 1313{
1316 Evas_Object *fs = data; 1314 Evas_Object *fs = data;
1317 Efl_Model *parent = NULL; 1315 Efl_Model *parent = NULL;
@@ -1342,7 +1340,7 @@ _on_dir_up(void *data, const Efl_Event *event EINA_UNUSED)
1342} 1340}
1343 1341
1344static void 1342static void
1345_home(void *data, const Efl_Event *event EINA_UNUSED) 1343_home(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1346{ 1344{
1347 Evas_Object *fs = data; 1345 Evas_Object *fs = data;
1348 1346
@@ -1366,7 +1364,7 @@ _current_filter_changed(void *data,
1366} 1364}
1367 1365
1368static void 1366static void
1369_ok(void *data, const Efl_Event *event EINA_UNUSED) 1367_ok(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1370{ 1368{
1371 const char *name; 1369 const char *name;
1372 const char *selection = NULL; 1370 const char *selection = NULL;
@@ -1413,7 +1411,7 @@ _ok(void *data, const Efl_Event *event EINA_UNUSED)
1413} 1411}
1414 1412
1415static void 1413static void
1416_canc(void *data, const Efl_Event *event EINA_UNUSED) 1414_canc(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1417{ 1415{
1418 Evas_Object *fs = data; 1416 Evas_Object *fs = data;
1419 1417
@@ -1754,8 +1752,8 @@ _elm_fileselector_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Data *pri
1754 efl_ui_mirrored_automatic_set(bt, EINA_FALSE); 1752 efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
1755 elm_object_part_content_set(bt, "icon", ic); 1753 elm_object_part_content_set(bt, "icon", ic);
1756 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Up")); 1754 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Up"));
1757 efl_event_callback_add 1755
1758 (bt, EFL_UI_EVENT_CLICKED, _on_dir_up, obj); 1756 evas_object_smart_callback_add(bt, "clicked", _on_dir_up, obj);
1759 1757
1760 priv->up_button = bt; 1758 priv->up_button = bt;
1761 elm_object_style_set(priv->up_button, buf); 1759 elm_object_style_set(priv->up_button, buf);
@@ -1768,8 +1766,7 @@ _elm_fileselector_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Data *pri
1768 efl_ui_mirrored_automatic_set(bt, EINA_FALSE); 1766 efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
1769 elm_object_part_content_set(bt, "icon", ic); 1767 elm_object_part_content_set(bt, "icon", ic);
1770 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Home")); 1768 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Home"));
1771 efl_event_callback_add 1769 evas_object_smart_callback_add(bt, "clicked", _home, obj);
1772 (bt, EFL_UI_EVENT_CLICKED, _home, obj);
1773 1770
1774 priv->home_button = bt; 1771 priv->home_button = bt;
1775 elm_object_style_set(priv->home_button, buf); 1772 elm_object_style_set(priv->home_button, buf);
@@ -2061,8 +2058,7 @@ _elm_fileselector_buttons_ok_cancel_set(Eo *obj, Elm_Fileselector_Data *sd, Eina
2061 bt = elm_button_add(obj); 2058 bt = elm_button_add(obj);
2062 efl_ui_mirrored_automatic_set(bt, EINA_FALSE); 2059 efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
2063 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("OK")); 2060 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("OK"));
2064 2061 evas_object_smart_callback_add(bt, "clicked", _ok, obj);
2065 efl_event_callback_add(bt, EFL_UI_EVENT_CLICKED, _ok, obj);
2066 2062
2067 sd->ok_button = bt; 2063 sd->ok_button = bt;
2068 elm_object_part_content_set(obj, "elm.swallow.ok", sd->ok_button); 2064 elm_object_part_content_set(obj, "elm.swallow.ok", sd->ok_button);
@@ -2071,9 +2067,7 @@ _elm_fileselector_buttons_ok_cancel_set(Eo *obj, Elm_Fileselector_Data *sd, Eina
2071 bt = elm_button_add(obj); 2067 bt = elm_button_add(obj);
2072 efl_ui_mirrored_automatic_set(bt, EINA_FALSE); 2068 efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
2073 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Cancel")); 2069 elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Cancel"));
2074 2070 evas_object_smart_callback_add(bt, "clicked", _canc, obj);
2075 efl_event_callback_add(bt, EFL_UI_EVENT_CLICKED, _canc, obj);
2076
2077 sd->cancel_button = bt; 2071 sd->cancel_button = bt;
2078 elm_object_part_content_set(obj, "elm.swallow.cancel", sd->cancel_button); 2072 elm_object_part_content_set(obj, "elm.swallow.cancel", sd->cancel_button);
2079 } 2073 }
diff --git a/src/lib/elementary/elc_fileselector_button.c b/src/lib/elementary/elc_fileselector_button.c
index dfc8df2..df7259e 100644
--- a/src/lib/elementary/elc_fileselector_button.c
+++ b/src/lib/elementary/elc_fileselector_button.c
@@ -184,7 +184,7 @@ _activate(Elm_Fileselector_Button_Data *sd)
184} 184}
185 185
186static void 186static void
187_button_clicked(void *data, const Efl_Event *event EINA_UNUSED) 187_button_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
188{ 188{
189 _activate(data); 189 _activate(data);
190} 190}
@@ -233,7 +233,8 @@ _elm_fileselector_button_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Bu
233 233
234 efl_ui_mirrored_automatic_set(obj, EINA_FALSE); 234 efl_ui_mirrored_automatic_set(obj, EINA_FALSE);
235 235
236 efl_event_callback_add(obj, EFL_UI_EVENT_CLICKED, _button_clicked, priv); 236 evas_object_smart_callback_add(obj, "clicked", _button_clicked, priv);
237
237 238
238 efl_ui_widget_theme_apply(obj); 239 efl_ui_widget_theme_apply(obj);
239 elm_widget_can_focus_set(obj, EINA_TRUE); 240 elm_widget_can_focus_set(obj, EINA_TRUE);
diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c
index 7274b1d..bf9b706 100644
--- a/src/lib/elementary/elc_fileselector_entry.c
+++ b/src/lib/elementary/elc_fileselector_entry.c
@@ -58,15 +58,24 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] =
58 } 58 }
59SIG_FWD(CHANGED, ELM_FILESELECTOR_ENTRY_EVENT_CHANGED) 59SIG_FWD(CHANGED, ELM_FILESELECTOR_ENTRY_EVENT_CHANGED)
60SIG_FWD(PRESS, ELM_FILESELECTOR_ENTRY_EVENT_PRESS) 60SIG_FWD(PRESS, ELM_FILESELECTOR_ENTRY_EVENT_PRESS)
61SIG_FWD(LONGPRESSED, EFL_UI_EVENT_LONGPRESSED)
62SIG_FWD(CLICKED, EFL_UI_EVENT_CLICKED)
63SIG_FWD(CLICKED_DOUBLE, EFL_UI_EVENT_CLICKED_DOUBLE)
64SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE) 61SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE)
65SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY) 62SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY)
66SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT) 63SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT)
67SIG_FWD(UNPRESSED, EFL_UI_EVENT_UNPRESSED)
68#undef SIG_FWD 64#undef SIG_FWD
69 65
66#define SIG_FWD(name, event) \
67 static void \
68 _##name##_fwd(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) \
69 { \
70 evas_object_smart_callback_call(data, event, event_info); \
71 }
72SIG_FWD(CLICKED, "clicked")
73SIG_FWD(CLICKED_DOUBLE, "clicked,double")
74SIG_FWD(UNPRESSED, "unpressed")
75SIG_FWD(LONGPRESSED, "longpressed")
76#undef SIG_FWD
77
78
70static void 79static void
71_FILE_CHOSEN_fwd(void *data, const Efl_Event *event) 80_FILE_CHOSEN_fwd(void *data, const Efl_Event *event)
72{ 81{
@@ -229,9 +238,13 @@ _elm_fileselector_entry_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Ent
229 (priv->button, _elm_config->fileselector_expand_enable); 238 (priv->button, _elm_config->fileselector_expand_enable);
230 239
231#define SIG_FWD(name, event) \ 240#define SIG_FWD(name, event) \
241 evas_object_smart_callback_add(priv->button, event, _##name##_fwd, obj)
242 SIG_FWD(CLICKED, "clicked");
243 SIG_FWD(UNPRESSED, "unpressed");
244#undef SIG_FWD
245
246#define SIG_FWD(name, event) \
232 efl_event_callback_add(priv->button, event, _##name##_fwd, obj) 247 efl_event_callback_add(priv->button, event, _##name##_fwd, obj)
233 SIG_FWD(CLICKED, EFL_UI_EVENT_CLICKED);
234 SIG_FWD(UNPRESSED, EFL_UI_EVENT_UNPRESSED);
235 SIG_FWD(FILE_CHOSEN, ELM_FILESELECTOR_BUTTON_EVENT_FILE_CHOSEN); 248 SIG_FWD(FILE_CHOSEN, ELM_FILESELECTOR_BUTTON_EVENT_FILE_CHOSEN);
236#undef SIG_FWD 249#undef SIG_FWD
237 250
@@ -247,14 +260,16 @@ _elm_fileselector_entry_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Ent
247 SIG_FWD(CHANGED, ELM_ENTRY_EVENT_CHANGED); 260 SIG_FWD(CHANGED, ELM_ENTRY_EVENT_CHANGED);
248 SIG_FWD(ACTIVATED, ELM_ENTRY_EVENT_ACTIVATED); 261 SIG_FWD(ACTIVATED, ELM_ENTRY_EVENT_ACTIVATED);
249 SIG_FWD(PRESS, ELM_ENTRY_EVENT_PRESS); 262 SIG_FWD(PRESS, ELM_ENTRY_EVENT_PRESS);
250 SIG_FWD(LONGPRESSED, EFL_UI_EVENT_LONGPRESSED);
251 SIG_FWD(CLICKED, EFL_UI_EVENT_CLICKED);
252 SIG_FWD(CLICKED_DOUBLE, EFL_UI_EVENT_CLICKED_DOUBLE);
253 SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE); 263 SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE);
254 SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY); 264 SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY);
255 SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT); 265 SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT);
256#undef SIG_FWD 266#undef SIG_FWD
257 267#define SIG_FWD(name, event) \
268 evas_object_smart_callback_add(priv->entry, event, _##name##_fwd, obj)
269 SIG_FWD(LONGPRESSED, "longpressed");
270 SIG_FWD(CLICKED, "clicked");
271 SIG_FWD(CLICKED_DOUBLE, "clicked,double");
272#undef SIG_FWD
258 efl_event_callback_forwarder_add(priv->entry, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, obj); 273 efl_event_callback_forwarder_add(priv->entry, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, obj);
259 274
260 if (!elm_layout_theme_set 275 if (!elm_layout_theme_set
diff --git a/src/lib/elementary/elc_hoversel.c b/src/lib/elementary/elc_hoversel.c
index e06c107..baee718 100644
--- a/src/lib/elementary/elc_hoversel.c
+++ b/src/lib/elementary/elc_hoversel.c
@@ -114,11 +114,11 @@ _elm_hoversel_efl_ui_widget_theme_apply(Eo *obj, Elm_Hoversel_Data *sd)
114} 114}
115 115
116static void 116static void
117_on_hover_clicked(void *data, const Efl_Event *event) 117_on_hover_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
118{ 118{
119 const char *dismissstr; 119 const char *dismissstr;
120 120
121 dismissstr = elm_layout_data_get(event->object, "dismiss"); 121 dismissstr = elm_layout_data_get(obj, "dismiss");
122 122
123 if (!dismissstr || strcmp(dismissstr, "on")) 123 if (!dismissstr || strcmp(dismissstr, "on"))
124 elm_hoversel_hover_end(data); // for backward compatibility 124 elm_hoversel_hover_end(data); // for backward compatibility
@@ -167,7 +167,7 @@ _auto_update(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
167} 167}
168 168
169static void 169static void
170_on_item_clicked(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) 170_on_item_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
171{ 171{
172 Elm_Hoversel_Item_Data *item = data; 172 Elm_Hoversel_Item_Data *item = data;
173 Evas_Object *obj2 = WIDGET(item); 173 Evas_Object *obj2 = WIDGET(item);
@@ -485,8 +485,7 @@ _activate(Evas_Object *obj)
485 485
486 elm_object_style_set(sd->hover, buf); 486 elm_object_style_set(sd->hover, buf);
487 487
488 efl_event_callback_add 488 evas_object_smart_callback_add(sd->hover, "clicked", _on_hover_clicked, obj);
489 (sd->hover, EFL_UI_EVENT_CLICKED, _on_hover_clicked, obj);
490 elm_layout_signal_callback_add 489 elm_layout_signal_callback_add
491 (sd->hover, "elm,action,hide,finished", "elm", _hover_end_finished, obj); 490 (sd->hover, "elm,action,hide,finished", "elm", _hover_end_finished, obj);
492 elm_hover_target_set(sd->hover, obj); 491 elm_hover_target_set(sd->hover, obj);
@@ -520,7 +519,7 @@ _activate(Evas_Object *obj)
520} 519}
521 520
522static void 521static void
523_on_clicked(void *data, const Efl_Event *event EINA_UNUSED) 522_on_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
524{ 523{
525 _activate(data); 524 _activate(data);
526} 525}
@@ -639,8 +638,7 @@ _elm_hoversel_efl_canvas_group_group_add(Eo *obj, Elm_Hoversel_Data *pd)
639{ 638{
640 efl_canvas_group_add(efl_super(obj, MY_CLASS)); 639 efl_canvas_group_add(efl_super(obj, MY_CLASS));
641 640
642 efl_event_callback_add(obj, EFL_UI_EVENT_CLICKED, _on_clicked, obj); 641 evas_object_smart_callback_add(obj, "clicked", _on_clicked, obj);
643
644 //What are you doing here? 642 //What are you doing here?
645 efl_ui_widget_theme_apply(obj); 643 efl_ui_widget_theme_apply(obj);
646 644
@@ -876,7 +874,8 @@ _elm_hoversel_item_add(Eo *obj, Elm_Hoversel_Data *sd, const char *label, const
876 874
877 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0); 875 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
878 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); 876 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
879 efl_event_callback_add(bt, EFL_UI_EVENT_CLICKED, _on_item_clicked, item); 877 evas_object_smart_callback_add(bt, "clicked", _on_item_clicked, item);
878
880 efl_event_callback_add(bt, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _item_focus_changed, item); 879 efl_event_callback_add(bt, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _item_focus_changed, item);
881 880
882 sd->items = eina_list_append(sd->items, eo_item); 881 sd->items = eina_list_append(sd->items, eo_item);
diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c
index 452d7e0..3c7e26c 100644
--- a/src/lib/elementary/elc_multibuttonentry.c
+++ b/src/lib/elementary/elc_multibuttonentry.c
@@ -972,7 +972,7 @@ _mouse_clicked_signal_cb(void *data EINA_UNUSED,
972 972
973 if (sd->editable) elm_entry_input_panel_show(sd->entry); 973 if (sd->editable) elm_entry_input_panel_show(sd->entry);
974 974
975 efl_event_callback_legacy_call(obj, EFL_UI_EVENT_CLICKED, NULL); 975 evas_object_smart_callback_call(obj, "clicked", NULL);
976} 976}
977 977
978static void 978static void
diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c
index 7675b61..e2be2f5 100644
--- a/src/lib/elementary/elc_naviframe.c
+++ b/src/lib/elementary/elc_naviframe.c
@@ -49,7 +49,7 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
49 {NULL, NULL} 49 {NULL, NULL}
50}; 50};
51 51
52static void _on_item_back_btn_clicked(void *data, const Efl_Event *event); 52static void _on_item_back_btn_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED);
53 53
54static Eina_Bool _key_action_top_item_get(Evas_Object *obj, const char *params); 54static Eina_Bool _key_action_top_item_get(Evas_Object *obj, const char *params);
55static Eina_Bool _key_action_item_pop(Evas_Object *obj, const char *params); 55static Eina_Bool _key_action_item_pop(Evas_Object *obj, const char *params);
@@ -680,8 +680,7 @@ _item_title_prev_btn_unset(Elm_Naviframe_Item_Data *it)
680 680
681 evas_object_event_callback_del 681 evas_object_event_callback_del
682 (content, EVAS_CALLBACK_DEL, _item_title_prev_btn_del_cb); 682 (content, EVAS_CALLBACK_DEL, _item_title_prev_btn_del_cb);
683 Eo* parent = efl_parent_get(content); 683 evas_object_smart_callback_del(content, "clicked", _on_item_back_btn_clicked);
684 efl_event_callback_del(content, EFL_UI_EVENT_CLICKED, _on_item_back_btn_clicked, parent);
685 it->title_prev_btn = NULL; 684 it->title_prev_btn = NULL;
686 if (it->auto_pushed_btn) it->auto_pushed_btn = NULL; 685 if (it->auto_pushed_btn) it->auto_pushed_btn = NULL;
687 return content; 686 return content;
@@ -938,13 +937,13 @@ _elm_naviframe_elm_layout_sizing_eval(Eo *obj, Elm_Naviframe_Data *sd)
938} 937}
939 938
940static void 939static void
941_on_item_back_btn_clicked(void *data, const Efl_Event *event) 940_on_item_back_btn_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
942{ 941{
943 /* Since edje has the event queue, clicked event could be happened 942 /* Since edje has the event queue, clicked event could be happened
944 multiple times on some heavy environment. This callback del will 943 multiple times on some heavy environment. This callback del will
945 prevent those scenario and guarantee only one clicked for it's own 944 prevent those scenario and guarantee only one clicked for it's own
946 page. */ 945 page. */
947 efl_event_callback_del(event->object, EFL_UI_EVENT_CLICKED, _on_item_back_btn_clicked, data); 946 evas_object_smart_callback_del(obj, "clicked", _on_item_back_btn_clicked);
948 elm_naviframe_item_pop(data); 947 elm_naviframe_item_pop(data);
949} 948}
950 949
@@ -957,8 +956,7 @@ _back_btn_new(Evas_Object *obj, const char *title_label)
957 btn = elm_button_add(obj); 956 btn = elm_button_add(obj);
958 957
959 if (!btn) return NULL; 958 if (!btn) return NULL;
960 efl_event_callback_add 959 evas_object_smart_callback_add(btn, "clicked", _on_item_back_btn_clicked, obj);
961 (btn, EFL_UI_EVENT_CLICKED, _on_item_back_btn_clicked, obj);
962 snprintf 960 snprintf
963 (buf, sizeof(buf), "naviframe/back_btn/%s", elm_widget_style_get(obj)); 961 (buf, sizeof(buf), "naviframe/back_btn/%s", elm_widget_style_get(obj));
964 elm_object_style_set(btn, buf); 962 elm_object_style_set(btn, buf);
@@ -1744,8 +1742,7 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
1744 Since the item is not popped or deleted here, the deleted 1742 Since the item is not popped or deleted here, the deleted
1745 callback of the auto pushed button should be restored. */ 1743 callback of the auto pushed button should be restored. */
1746 if (it->auto_pushed_btn) 1744 if (it->auto_pushed_btn)
1747 efl_event_callback_add 1745 evas_object_smart_callback_add(it->auto_pushed_btn, "clicked", _on_item_back_btn_clicked, obj);
1748 (it->auto_pushed_btn, EFL_UI_EVENT_CLICKED, _on_item_back_btn_clicked, obj);
1749 it->popping = EINA_FALSE; 1746 it->popping = EINA_FALSE;
1750 } 1747 }
1751 evas_object_unref(obj); 1748 evas_object_unref(obj);
diff --git a/src/lib/elementary/elc_player.c b/src/lib/elementary/elc_player.c
index 275599c..c711557 100644
--- a/src/lib/elementary/elc_player.c
+++ b/src/lib/elementary/elc_player.c
@@ -289,7 +289,7 @@ _update_volume(void *data, const Efl_Event *event EINA_UNUSED)
289} 289}
290 290
291static void 291static void
292_forward(void *data, const Efl_Event *event EINA_UNUSED) 292_forward(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
293{ 293{
294 double pos, length; 294 double pos, length;
295 ELM_PLAYER_DATA_GET(data, sd); 295 ELM_PLAYER_DATA_GET(data, sd);
@@ -305,21 +305,21 @@ _forward(void *data, const Efl_Event *event EINA_UNUSED)
305} 305}
306 306
307static void 307static void
308_info(void *data, const Efl_Event *event EINA_UNUSED) 308_info(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
309{ 309{
310 elm_layout_signal_emit(data, "elm,button,info", "elm"); 310 elm_layout_signal_emit(data, "elm,button,info", "elm");
311 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_INFO_CLICKED, NULL); 311 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_INFO_CLICKED, NULL);
312} 312}
313 313
314static void 314static void
315_next(void *data, const Efl_Event *event EINA_UNUSED) 315_next(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
316{ 316{
317 elm_layout_signal_emit(data, "elm,button,next", "elm"); 317 elm_layout_signal_emit(data, "elm,button,next", "elm");
318 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_NEXT_CLICKED, NULL); 318 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_NEXT_CLICKED, NULL);
319} 319}
320 320
321static void 321static void
322_pause(void *data, const Efl_Event *event EINA_UNUSED) 322_pause(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
323{ 323{
324 ELM_PLAYER_DATA_GET(data, sd); 324 ELM_PLAYER_DATA_GET(data, sd);
325 325
@@ -329,7 +329,7 @@ _pause(void *data, const Efl_Event *event EINA_UNUSED)
329} 329}
330 330
331static void 331static void
332_play(void *data, const Efl_Event *event EINA_UNUSED) 332_play(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
333{ 333{
334 ELM_PLAYER_DATA_GET(data, sd); 334 ELM_PLAYER_DATA_GET(data, sd);
335 335
@@ -339,14 +339,14 @@ _play(void *data, const Efl_Event *event EINA_UNUSED)
339} 339}
340 340
341static void 341static void
342_prev(void *data, const Efl_Event *event EINA_UNUSED) 342_prev(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
343{ 343{
344 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_PREV_CLICKED, NULL); 344 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_PREV_CLICKED, NULL);
345 elm_layout_signal_emit(data, "elm,button,prev", "elm"); 345 elm_layout_signal_emit(data, "elm,button,prev", "elm");
346} 346}
347 347
348static void 348static void
349_rewind(void *data, const Efl_Event *event EINA_UNUSED) 349_rewind(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
350{ 350{
351 double pos; 351 double pos;
352 ELM_PLAYER_DATA_GET(data, sd); 352 ELM_PLAYER_DATA_GET(data, sd);
@@ -361,14 +361,14 @@ _rewind(void *data, const Efl_Event *event EINA_UNUSED)
361} 361}
362 362
363static void 363static void
364_stop(void *data, const Efl_Event *event EINA_UNUSED) 364_stop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
365{ 365{
366 elm_layout_signal_emit(data, "elm,button,stop", "elm"); 366 elm_layout_signal_emit(data, "elm,button,stop", "elm");
367 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_QUALITY_CLICKED, NULL); 367 efl_event_callback_legacy_call(data, ELM_PLAYER_EVENT_QUALITY_CLICKED, NULL);
368} 368}
369 369
370static void 370static void
371_eject(void *data, const Efl_Event *event EINA_UNUSED) 371_eject(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
372{ 372{
373 ELM_PLAYER_DATA_GET(data, sd); 373 ELM_PLAYER_DATA_GET(data, sd);
374 374
@@ -395,7 +395,7 @@ _mute_toggle(Evas_Object *obj)
395} 395}
396 396
397static void 397static void
398_volume(void *data, const Efl_Event *event EINA_UNUSED) 398_volume(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
399{ 399{
400 elm_layout_signal_emit(data, "elm,button,volume", "elm"); 400 elm_layout_signal_emit(data, "elm,button,volume", "elm");
401 _mute_toggle(data); 401 _mute_toggle(data);
@@ -403,7 +403,7 @@ _volume(void *data, const Efl_Event *event EINA_UNUSED)
403} 403}
404 404
405static void 405static void
406_mute(void *data, const Efl_Event *event EINA_UNUSED) 406_mute(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
407{ 407{
408 elm_layout_signal_emit(data, "elm,button,mute", "elm"); 408 elm_layout_signal_emit(data, "elm,button,mute", "elm");
409 _mute_toggle(data); 409 _mute_toggle(data);
@@ -455,7 +455,7 @@ _video_del(void *data,
455static Evas_Object * 455static Evas_Object *
456_player_button_add(Evas_Object *obj, 456_player_button_add(Evas_Object *obj,
457 const char *name, 457 const char *name,
458 Efl_Event_Cb func) 458 Evas_Smart_Cb func)
459{ 459{
460 Evas_Object *ic; 460 Evas_Object *ic;
461 Evas_Object *bt; 461 Evas_Object *bt;
@@ -475,8 +475,8 @@ _player_button_add(Evas_Object *obj,
475 snprintf(buf, sizeof(buf), "media_player/%s/%s", name, 475 snprintf(buf, sizeof(buf), "media_player/%s/%s", name,
476 elm_widget_style_get(obj)); 476 elm_widget_style_get(obj));
477 elm_object_style_set(bt, buf); 477 elm_object_style_set(bt, buf);
478 efl_event_callback_add 478 evas_object_smart_callback_add(bt, "clicked", func, obj);
479 (bt, EFL_UI_EVENT_CLICKED, func, obj); 479
480 snprintf(buf, sizeof(buf), "elm.swallow.media_player.%s", name); 480 snprintf(buf, sizeof(buf), "elm.swallow.media_player.%s", name);
481 if (!elm_layout_content_set(obj, buf, bt)) 481 if (!elm_layout_content_set(obj, buf, bt))
482 { 482 {
diff --git a/src/lib/elementary/elm_bubble.c b/src/lib/elementary/elm_bubble.c
index 559ba53..b3eacc0 100644
--- a/src/lib/elementary/elm_bubble.c
+++ b/src/lib/elementary/elm_bubble.c
@@ -77,7 +77,7 @@ _on_mouse_up(void *data,
77 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) 77 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
78 return; 78 return;
79 79
80 efl_event_callback_legacy_call(data, EFL_UI_EVENT_CLICKED, NULL); 80 evas_object_smart_callback_call(data, "clicked", NULL);
81} 81}
82 82
83static Eina_Bool 83static Eina_Bool
diff --git a/src/lib/elementary/elm_bubble_eo.c b/src/lib/elementary/elm_bubble_eo.c
index 8b6ef3e..4f6ee16 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_color_class.c b/src/lib/elementary/elm_color_class.c
index f6ed3b9..9f90ae6 100644
--- a/src/lib/elementary/elm_color_class.c
+++ b/src/lib/elementary/elm_color_class.c
@@ -152,14 +152,14 @@ _colorclass_changed(void *data, const Efl_Event *event EINA_UNUSED)
152} 152}
153 153
154static void 154static void
155_colorclass_reset(void *data, const Efl_Event *event EINA_UNUSED) 155_colorclass_reset(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
156{ 156{
157 Colorclass_UI *cc = data; 157 Colorclass_UI *cc = data;
158 Colorclass color; 158 Colorclass color;
159 159
160 if (!cc->current) 160 if (!cc->current)
161 { 161 {
162 efl_event_callback_stop(event->object); 162 efl_event_callback_stop(obj);
163 return; 163 return;
164 } 164 }
165 //if (cc->winid && remote_iface) 165 //if (cc->winid && remote_iface)
@@ -750,8 +750,7 @@ elm_color_class_editor_add(Evas_Object *obj)
750 /* FIXME: translate */ 750 /* FIXME: translate */
751 elm_object_text_set(bt, "Reset"); 751 elm_object_text_set(bt, "Reset");
752 elm_object_part_content_set(ly, "elm.swallow.reset", bt); 752 elm_object_part_content_set(ly, "elm.swallow.reset", bt);
753 efl_event_callback_add 753 evas_object_smart_callback_add(bt, "clicked", _colorclass_reset, cc);
754 (bt, EFL_UI_EVENT_CLICKED, _colorclass_reset, cc);
755 754
756 cc->cs = cs = elm_colorselector_add(ly); 755 cc->cs = cs = elm_colorselector_add(ly);
757 elm_colorselector_mode_set(cs, ELM_COLORSELECTOR_COMPONENTS); 756 elm_colorselector_mode_set(cs, ELM_COLORSELECTOR_COMPONENTS);
diff --git a/src/lib/elementary/elm_colorselector.c b/src/lib/elementary/elm_colorselector.c
index a48ed8a..6a2557e 100644
--- a/src/lib/elementary/elm_colorselector.c
+++ b/src/lib/elementary/elm_colorselector.c
@@ -737,13 +737,13 @@ _x11_elm_widget_xwin_get(const Evas_Object *obj)
737} 737}
738 738
739static void 739static void
740_start_grab_pick_cb(void *data, const Efl_Event *event) 740_start_grab_pick_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
741{ 741{
742 Evas_Object *o = data; 742 Evas_Object *o = data;
743 743
744 ELM_COLORSELECTOR_DATA_GET(o, sd); 744 ELM_COLORSELECTOR_DATA_GET(o, sd);
745 745
746 elm_object_disabled_set(event->object, EINA_TRUE); 746 elm_object_disabled_set(obj, EINA_TRUE);
747 747
748 sd->grab.mouse_motion = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, _mouse_grab_pixels, o); 748 sd->grab.mouse_motion = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, _mouse_grab_pixels, o);
749 sd->grab.key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_up_cb, o); 749 sd->grab.key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_up_cb, o);
@@ -937,8 +937,7 @@ _create_colorpicker(Evas_Object *obj)
937 sd->button = elm_button_add(sd->picker); 937 sd->button = elm_button_add(sd->picker);
938 elm_object_style_set(sd->button, style); 938 elm_object_style_set(sd->button, style);
939 elm_object_text_set(sd->button, E_("Pick a color")); 939 elm_object_text_set(sd->button, E_("Pick a color"));
940 efl_event_callback_add 940 evas_object_smart_callback_add(sd->button, "clicked", _start_grab_pick_cb, obj);
941 (sd->button, EFL_UI_EVENT_CLICKED, _start_grab_pick_cb, obj);
942 elm_box_pack_end(bx, sd->button); 941 elm_box_pack_end(bx, sd->button);
943 evas_object_show(sd->button); 942 evas_object_show(sd->button);
944 } 943 }
@@ -1101,12 +1100,12 @@ _button_clicked_cb(void *data, const Efl_Event *event)
1101} 1100}
1102 1101
1103static void 1102static void
1104_button_repeat_cb(void *data, const Efl_Event *event EINA_UNUSED) 1103_button_repeat_cb(void *data, Evas_Object *object, void *event_info EINA_UNUSED)
1105{ 1104{
1106 Color_Bar_Data *cb_data = data; 1105 Color_Bar_Data *cb_data = data;
1107 double x, y, step; 1106 double x, y, step;
1108 1107
1109 if (event->object == cb_data->rbt) step = 1.0 / BASE_STEP; 1108 if (object == cb_data->rbt) step = 1.0 / BASE_STEP;
1110 else step = -1.0 / BASE_STEP; 1109 else step = -1.0 / BASE_STEP;
1111 1110
1112 edje_object_part_drag_value_get(cb_data->colorbar, "elm.arrow", &x, &y); 1111 edje_object_part_drag_value_get(cb_data->colorbar, "elm.arrow", &x, &y);
@@ -1294,8 +1293,8 @@ _color_bars_add(Evas_Object *obj)
1294 (sd->cb_data[i]->lbt, _elm_config->longpress_timeout); 1293 (sd->cb_data[i]->lbt, _elm_config->longpress_timeout);
1295 elm_button_autorepeat_gap_timeout_set 1294 elm_button_autorepeat_gap_timeout_set
1296 (sd->cb_data[i]->lbt, (1.0 / _elm_config->fps)); 1295 (sd->cb_data[i]->lbt, (1.0 / _elm_config->fps));
1297 efl_event_callback_add 1296 evas_object_smart_callback_add
1298 (sd->cb_data[i]->lbt, EFL_UI_EVENT_REPEATED, _button_repeat_cb, sd->cb_data[i]); 1297 (sd->cb_data[i]->lbt, "repeated", _button_repeat_cb, sd->cb_data[i]);
1299 1298
1300 /* load right button */ 1299 /* load right button */
1301 if (!sd->cb_data[i]->rbt) sd->cb_data[i]->rbt = elm_button_add(sd->col_bars_area); 1300 if (!sd->cb_data[i]->rbt) sd->cb_data[i]->rbt = elm_button_add(sd->col_bars_area);
@@ -1312,8 +1311,8 @@ _color_bars_add(Evas_Object *obj)
1312 (sd->cb_data[i]->rbt, _elm_config->longpress_timeout); 1311 (sd->cb_data[i]->rbt, _elm_config->longpress_timeout);
1313 elm_button_autorepeat_gap_timeout_set 1312 elm_button_autorepeat_gap_timeout_set
1314 (sd->cb_data[i]->rbt, (1.0 / _elm_config->fps)); 1313 (sd->cb_data[i]->rbt, (1.0 / _elm_config->fps));
1315 efl_event_callback_add 1314 evas_object_smart_callback_add
1316 (sd->cb_data[i]->rbt, EFL_UI_EVENT_REPEATED, _button_repeat_cb, sd->cb_data[i]); 1315 (sd->cb_data[i]->lbt, "repeated", _button_repeat_cb, sd->cb_data[i]);
1317 } 1316 }
1318} 1317}
1319 1318
diff --git a/src/lib/elementary/elm_colorselector_eo.c b/src/lib/elementary/elm_colorselector_eo.c
index aba3685..b6b288a 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.c b/src/lib/elementary/elm_diskselector.c
index fd2494f..cd76454 100644
--- a/src/lib/elementary/elm_diskselector.c
+++ b/src/lib/elementary/elm_diskselector.c
@@ -612,8 +612,8 @@ _item_click_cb(void *data,
612 } 612 }
613 613
614 if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(eo_it), WIDGET(it), eo_it); 614 if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(eo_it), WIDGET(it), eo_it);
615 efl_event_callback_legacy_call 615 evas_object_smart_callback_call
616 (WIDGET(it), EFL_UI_EVENT_CLICKED, eo_it); 616 ( WIDGET(it), "clicked", eo_it);
617} 617}
618 618
619static char * 619static char *
diff --git a/src/lib/elementary/elm_diskselector_eo.c b/src/lib/elementary/elm_diskselector_eo.c
index b44f2a0..d533a10 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.c b/src/lib/elementary/elm_entry.c
index 2a6ad77..207c103 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -1987,8 +1987,8 @@ _long_press_cb(void *data)
1987 sd->long_pressed = EINA_TRUE; 1987 sd->long_pressed = EINA_TRUE;
1988 1988
1989 sd->longpress_timer = NULL; 1989 sd->longpress_timer = NULL;
1990 efl_event_callback_legacy_call 1990 evas_object_smart_callback_call
1991 (data, EFL_UI_EVENT_LONGPRESSED, NULL); 1991 (data, "longpressed", NULL);
1992 1992
1993 return ECORE_CALLBACK_CANCEL; 1993 return ECORE_CALLBACK_CANCEL;
1994} 1994}
@@ -2791,8 +2791,8 @@ _entry_mouse_clicked_signal_cb(void *data,
2791 const char *emission EINA_UNUSED, 2791 const char *emission EINA_UNUSED,
2792 const char *source EINA_UNUSED) 2792 const char *source EINA_UNUSED)
2793{ 2793{
2794 efl_event_callback_legacy_call 2794 evas_object_smart_callback_call
2795 (data, EFL_UI_EVENT_CLICKED, NULL); 2795 ( data, "clicked", NULL);
2796} 2796}
2797 2797
2798static void 2798static void
@@ -2801,8 +2801,8 @@ _entry_mouse_double_signal_cb(void *data,
2801 const char *emission EINA_UNUSED, 2801 const char *emission EINA_UNUSED,
2802 const char *source EINA_UNUSED) 2802 const char *source EINA_UNUSED)
2803{ 2803{
2804 efl_event_callback_legacy_call 2804 evas_object_smart_callback_call
2805 (data, EFL_UI_EVENT_CLICKED_DOUBLE, NULL); 2805 ( data, "clicked,double", NULL);
2806} 2806}
2807 2807
2808static void 2808static void
@@ -2811,8 +2811,8 @@ _entry_mouse_triple_signal_cb(void *data,
2811 const char *emission EINA_UNUSED, 2811 const char *emission EINA_UNUSED,
2812 const char *source EINA_UNUSED) 2812 const char *source EINA_UNUSED)
2813{ 2813{
2814 efl_event_callback_legacy_call 2814 evas_object_smart_callback_call
2815 (data, EFL_UI_EVENT_CLICKED_TRIPLE, NULL); 2815 ( data, "clicked,triple", NULL);
2816} 2816}
2817 2817
2818static Evas_Object * 2818static Evas_Object *
@@ -5586,8 +5586,8 @@ _activate(Evas_Object *obj)
5586 if (!elm_widget_disabled_get(obj) && 5586 if (!elm_widget_disabled_get(obj) &&
5587 !evas_object_freeze_events_get(obj)) 5587 !evas_object_freeze_events_get(obj))
5588 { 5588 {
5589 efl_event_callback_legacy_call 5589 evas_object_smart_callback_call
5590 (obj, EFL_UI_EVENT_CLICKED, NULL); 5590 ( obj, "clicked", NULL);
5591 if (sd->editable && sd->input_panel_enable) 5591 if (sd->editable && sd->input_panel_enable)
5592 edje_object_part_text_input_panel_show(sd->entry_edje, "elm.text"); 5592 edje_object_part_text_input_panel_show(sd->entry_edje, "elm.text");
5593 } 5593 }
diff --git a/src/lib/elementary/elm_entry_eo.c b/src/lib/elementary/elm_entry_eo.c
index 09ff579..110de55 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 58c0092..04af297 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 fa3e9d6..3ae6cd3 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.c b/src/lib/elementary/elm_gengrid.c
index 76e540a..6f73fdf 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -888,8 +888,8 @@ _long_press_cb(void *data)
888 if (elm_wdg_item_disabled_get(EO_OBJ(it)) || (it->dragging)) 888 if (elm_wdg_item_disabled_get(EO_OBJ(it)) || (it->dragging))
889 return ECORE_CALLBACK_CANCEL; 889 return ECORE_CALLBACK_CANCEL;
890 sd->longpressed = EINA_TRUE; 890 sd->longpressed = EINA_TRUE;
891 efl_event_callback_legacy_call 891 evas_object_smart_callback_call
892 (WIDGET(it), EFL_UI_EVENT_LONGPRESSED, EO_OBJ(it)); 892 (WIDGET(it), "longpressed", EO_OBJ(it));
893 893
894 if (sd->reorder_mode) 894 if (sd->reorder_mode)
895 { 895 {
@@ -986,11 +986,11 @@ _item_mouse_down_cb(void *data,
986 it->highlight_cb(it); 986 it->highlight_cb(it);
987 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) 987 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
988 { 988 {
989 efl_event_callback_legacy_call(WIDGET(it), EFL_UI_EVENT_CLICKED_DOUBLE, EO_OBJ(it)); 989 evas_object_smart_callback_call(WIDGET(it), "clicked,double", EO_OBJ(it));
990 efl_event_callback_legacy_call(WIDGET(it), ELM_GENGRID_EVENT_ACTIVATED, EO_OBJ(it)); 990 efl_event_callback_legacy_call(WIDGET(it), ELM_GENGRID_EVENT_ACTIVATED, EO_OBJ(it));
991 } 991 }
992 992
993 efl_event_callback_legacy_call(WIDGET(it), EFL_UI_EVENT_PRESSED, EO_OBJ(it)); 993 evas_object_smart_callback_call(WIDGET(it), "pressed", EO_OBJ(it));
994 ELM_SAFE_FREE(it->long_timer, ecore_timer_del); 994 ELM_SAFE_FREE(it->long_timer, ecore_timer_del);
995 if (it->realized) 995 if (it->realized)
996 it->long_timer = ecore_timer_add 996 it->long_timer = ecore_timer_add
@@ -1296,8 +1296,8 @@ _item_mouse_up_cb(void *data,
1296 if (dx < 0) dx = -dx; 1296 if (dx < 0) dx = -dx;
1297 if (dy < 0) dy = -dy; 1297 if (dy < 0) dy = -dy;
1298 if ((dx < 5) && (dy < 5)) 1298 if ((dx < 5) && (dy < 5))
1299 efl_event_callback_legacy_call 1299 evas_object_smart_callback_call
1300 (WIDGET(it), EFL_UI_EVENT_CLICKED_RIGHT, EO_OBJ(it)); 1300 ( WIDGET(it), "clicked,right", EO_OBJ(it));
1301 return; 1301 return;
1302 } 1302 }
1303 1303
diff --git a/src/lib/elementary/elm_gengrid_eo.c b/src/lib/elementary/elm_gengrid_eo.c
index 89263f9..b3012a5 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.c b/src/lib/elementary/elm_genlist.c
index c82a023..8a1bec3 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -4122,8 +4122,8 @@ _long_press_cb(void *data)
4122 goto end; 4122 goto end;
4123 4123
4124 sd->longpressed = EINA_TRUE; 4124 sd->longpressed = EINA_TRUE;
4125 efl_event_callback_legacy_call 4125 evas_object_smart_callback_call
4126 (WIDGET(it), EFL_UI_EVENT_LONGPRESSED, EO_OBJ(it)); 4126 (WIDGET(it), "longpressed", EO_OBJ(it));
4127 if ((sd->reorder_mode) && !(it->item->type & ELM_GENLIST_ITEM_GROUP)) 4127 if ((sd->reorder_mode) && !(it->item->type & ELM_GENLIST_ITEM_GROUP))
4128 { 4128 {
4129 sd->reorder_it = it; 4129 sd->reorder_it = it;
@@ -4410,13 +4410,13 @@ _item_mouse_down_cb(void *data,
4410 _item_highlight(it); 4410 _item_highlight(it);
4411 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) 4411 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
4412 { 4412 {
4413 efl_event_callback_legacy_call 4413 evas_object_smart_callback_call
4414 (WIDGET(it), EFL_UI_EVENT_CLICKED_DOUBLE, eo_it); 4414 ( WIDGET(it), "clicked,double", eo_it);
4415 efl_event_callback_legacy_call 4415 efl_event_callback_legacy_call
4416 (WIDGET(it), ELM_GENLIST_EVENT_ACTIVATED, eo_it); 4416 (WIDGET(it), ELM_GENLIST_EVENT_ACTIVATED, eo_it);
4417 } 4417 }
4418 efl_event_callback_legacy_call 4418 evas_object_smart_callback_call
4419 (WIDGET(it), EFL_UI_EVENT_PRESSED, eo_it); 4419 (WIDGET(it), "pressed", eo_it);
4420} 4420}
4421 4421
4422static Item_Block * 4422static Item_Block *
@@ -5065,8 +5065,8 @@ _item_mouse_up_cb(void *data,
5065 if (dx < 0) dx = -dx; 5065 if (dx < 0) dx = -dx;
5066 if (dy < 0) dy = -dy; 5066 if (dy < 0) dy = -dy;
5067 if ((dx < 5) && (dy < 5)) 5067 if ((dx < 5) && (dy < 5))
5068 efl_event_callback_legacy_call 5068 evas_object_smart_callback_call
5069 (WIDGET(it), EFL_UI_EVENT_CLICKED_RIGHT, EO_OBJ(it)); 5069 ( WIDGET(it), "clicked,right", EO_OBJ(it));
5070 return; 5070 return;
5071 } 5071 }
5072 5072
diff --git a/src/lib/elementary/elm_genlist_eo.c b/src/lib/elementary/elm_genlist_eo.c
index ca2fd56..fd0d521 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.c b/src/lib/elementary/elm_hover.c
index 271436f..80c234a 100644
--- a/src/lib/elementary/elm_hover.c
+++ b/src/lib/elementary/elm_hover.c
@@ -566,14 +566,14 @@ _hov_dismiss_cb(void *data,
566 if (dismissstr && !strcmp(dismissstr, "on")) 566 if (dismissstr && !strcmp(dismissstr, "on"))
567 { 567 {
568 _hide_signals_emit(data); 568 _hide_signals_emit(data);
569 efl_event_callback_legacy_call 569 evas_object_smart_callback_call
570 (data, EFL_UI_EVENT_CLICKED, NULL); 570 ( data, "clicked", NULL);
571 } 571 }
572 else 572 else
573 { 573 {
574 evas_object_hide(data); 574 evas_object_hide(data);
575 efl_event_callback_legacy_call 575 evas_object_smart_callback_call
576 (data, EFL_UI_EVENT_CLICKED, NULL); 576 ( data, "clicked", NULL);
577 efl_event_callback_legacy_call(data, ELM_HOVER_EVENT_DISMISSED, NULL); 577 efl_event_callback_legacy_call(data, ELM_HOVER_EVENT_DISMISSED, NULL);
578 } // for backward compatibility 578 } // for backward compatibility
579} 579}
@@ -616,8 +616,8 @@ _elm_hover_efl_canvas_group_group_del(Eo *obj, Elm_Hover_Data *sd)
616 616
617 if (evas_object_visible_get(obj)) 617 if (evas_object_visible_get(obj))
618 { 618 {
619 efl_event_callback_legacy_call 619 evas_object_smart_callback_call
620 (obj, EFL_UI_EVENT_CLICKED, NULL); 620 ( obj, "clicked", NULL);
621 efl_event_callback_legacy_call(obj, ELM_HOVER_EVENT_DISMISSED, NULL); 621 efl_event_callback_legacy_call(obj, ELM_HOVER_EVENT_DISMISSED, NULL);
622 } 622 }
623 623
diff --git a/src/lib/elementary/elm_hover_eo.c b/src/lib/elementary/elm_hover_eo.c
index 5ca798a..b5a1b20 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 fb10826..de2f537 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.c b/src/lib/elementary/elm_index.c
index c046080..18e3827 100644
--- a/src/lib/elementary/elm_index.c
+++ b/src/lib/elementary/elm_index.c
@@ -762,7 +762,7 @@ _sel_eval(Evas_Object *obj,
762 _elm_access_say(ret); 762 _elm_access_say(ret);
763 } 763 }
764 764
765 if (om_closest) 765 if (om_closest)
766 efl_event_callback_legacy_call 766 efl_event_callback_legacy_call
767 (obj, ELM_INDEX_EVENT_CHANGED, EO_OBJ(om_closest)); 767 (obj, ELM_INDEX_EVENT_CHANGED, EO_OBJ(om_closest));
768 else 768 else
@@ -861,8 +861,8 @@ _on_mouse_up(void *data,
861 eo_item = elm_index_selected_item_get(data, sd->level); 861 eo_item = elm_index_selected_item_get(data, sd->level);
862 if (eo_item) 862 if (eo_item)
863 { 863 {
864 efl_event_callback_legacy_call 864 evas_object_smart_callback_call
865 (data, EFL_UI_EVENT_CLICKED, eo_item); 865 ( data, "clicked", eo_item);
866 evas_object_smart_callback_call(data, "selected", eo_item); 866 evas_object_smart_callback_call(data, "selected", eo_item);
867 eo_id_item = eo_item; 867 eo_id_item = eo_item;
868 ELM_INDEX_ITEM_DATA_GET(eo_id_item, id_item); 868 ELM_INDEX_ITEM_DATA_GET(eo_id_item, id_item);
diff --git a/src/lib/elementary/elm_index_eo.c b/src/lib/elementary/elm_index_eo.c
index 9c935c7..68bd184 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.c b/src/lib/elementary/elm_list.c
index da40668..4c936ab 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -1597,8 +1597,8 @@ _long_press_cb(void *data)
1597 if (it->base->disabled) goto end; 1597 if (it->base->disabled) goto end;
1598 1598
1599 sd->longpressed = EINA_TRUE; 1599 sd->longpressed = EINA_TRUE;
1600 efl_event_callback_legacy_call 1600 evas_object_smart_callback_call
1601 (WIDGET(it), EFL_UI_EVENT_LONGPRESSED, EO_OBJ(it)); 1601 (WIDGET(it), "longpressed", EO_OBJ(it));
1602 1602
1603end: 1603end:
1604 return ECORE_CALLBACK_CANCEL; 1604 return ECORE_CALLBACK_CANCEL;
@@ -1748,8 +1748,8 @@ _mouse_down_cb(void *data,
1748 /* Always call the callbacks last - the user may delete our context! */ 1748 /* Always call the callbacks last - the user may delete our context! */
1749 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) 1749 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
1750 { 1750 {
1751 efl_event_callback_legacy_call 1751 evas_object_smart_callback_call
1752 (WIDGET(it), EFL_UI_EVENT_CLICKED_DOUBLE, EO_OBJ(it)); 1752 ( WIDGET(it), "clicked,double", EO_OBJ(it));
1753 efl_event_callback_legacy_call 1753 efl_event_callback_legacy_call
1754 (WIDGET(it), ELM_LIST_EVENT_ACTIVATED, EO_OBJ(it)); 1754 (WIDGET(it), ELM_LIST_EVENT_ACTIVATED, EO_OBJ(it));
1755 } 1755 }
@@ -1784,8 +1784,8 @@ _mouse_up_cb(void *data,
1784 if (dx < 0) dx = -dx; 1784 if (dx < 0) dx = -dx;
1785 if (dy < 0) dy = -dy; 1785 if (dy < 0) dy = -dy;
1786 if ((dx < 5) && (dy < 5)) 1786 if ((dx < 5) && (dy < 5))
1787 efl_event_callback_legacy_call 1787 evas_object_smart_callback_call
1788 (obj, EFL_UI_EVENT_CLICKED_RIGHT, EO_OBJ(it)); 1788 ( obj, "clicked,right", EO_OBJ(it));
1789 return; 1789 return;
1790 } 1790 }
1791 1791
diff --git a/src/lib/elementary/elm_list_eo.c b/src/lib/elementary/elm_list_eo.c
index 9668aa5..3da0cba 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.c b/src/lib/elementary/elm_map.c
index 71deea0..c026afa 100644
--- a/src/lib/elementary/elm_map.c
+++ b/src/lib/elementary/elm_map.c
@@ -1356,8 +1356,8 @@ _long_press_cb(void *data)
1356 ELM_MAP_DATA_GET(data, sd); 1356 ELM_MAP_DATA_GET(data, sd);
1357 1357
1358 sd->long_timer = NULL; 1358 sd->long_timer = NULL;
1359 efl_event_callback_legacy_call 1359
1360 (sd->obj, EFL_UI_EVENT_LONGPRESSED, &sd->ev); 1360 evas_object_smart_callback_call(sd->obj, "longpressed", &sd->ev);
1361 1361
1362 return ECORE_CALLBACK_CANCEL; 1362 return ECORE_CALLBACK_CANCEL;
1363} 1363}
@@ -1376,8 +1376,8 @@ _mouse_down_cb(void *data,
1376 else sd->on_hold = EINA_FALSE; 1376 else sd->on_hold = EINA_FALSE;
1377 1377
1378 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) 1378 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
1379 efl_event_callback_legacy_call 1379 evas_object_smart_callback_call
1380 (sd->obj, EFL_UI_EVENT_CLICKED_DOUBLE, ev); 1380 (sd->obj, "clicked,double", ev);
1381 else 1381 else
1382 efl_event_callback_legacy_call 1382 efl_event_callback_legacy_call
1383 (sd->obj, ELM_MAP_EVENT_PRESS, ev); 1383 (sd->obj, ELM_MAP_EVENT_PRESS, ev);
@@ -1407,8 +1407,9 @@ _mouse_up_cb(void *data,
1407 ELM_SAFE_FREE(sd->long_timer, ecore_timer_del); 1407 ELM_SAFE_FREE(sd->long_timer, ecore_timer_del);
1408 1408
1409 if (!sd->on_hold) 1409 if (!sd->on_hold)
1410 efl_event_callback_legacy_call 1410
1411 (sd->obj, EFL_UI_EVENT_CLICKED, ev); 1411 evas_object_smart_callback_call
1412 (sd->obj, "clicked", ev);
1412 sd->on_hold = EINA_FALSE; 1413 sd->on_hold = EINA_FALSE;
1413} 1414}
1414 1415
diff --git a/src/lib/elementary/elm_map_eo.c b/src/lib/elementary/elm_map_eo.c
index 62ed9c2..0e522f4 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.c b/src/lib/elementary/elm_menu.c
index 236d859..681ac22 100644
--- a/src/lib/elementary/elm_menu.c
+++ b/src/lib/elementary/elm_menu.c
@@ -437,8 +437,8 @@ static void
437_hover_dismissed_cb(void *data, const Efl_Event *event) 437_hover_dismissed_cb(void *data, const Efl_Event *event)
438{ 438{
439 _menu_hide(data, event->object, event->info); 439 _menu_hide(data, event->object, event->info);
440 efl_event_callback_legacy_call 440 evas_object_smart_callback_call
441 (data, EFL_UI_EVENT_CLICKED, NULL); 441 ( data, "clicked", NULL);
442 efl_event_callback_legacy_call(data, ELM_MENU_EVENT_DISMISSED, NULL); 442 efl_event_callback_legacy_call(data, ELM_MENU_EVENT_DISMISSED, NULL);
443} 443}
444 444
diff --git a/src/lib/elementary/elm_menu_eo.c b/src/lib/elementary/elm_menu_eo.c
index 1bc7f98..4aaa856 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 24dfb7f..dcfb627 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_panel.c b/src/lib/elementary/elm_panel.c
index 7d9e800..033c892 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -350,7 +350,6 @@ _drawer_close(Evas_Object *obj, Evas_Coord w, Evas_Coord h, Eina_Bool anim)
350 int x = 0, y = 0, cx, cy; 350 int x = 0, y = 0, cx, cy;
351 Eina_Bool horizontal = EINA_FALSE; 351 Eina_Bool horizontal = EINA_FALSE;
352 352
353 elm_widget_tree_unfocusable_set(obj, EINA_TRUE);
354 switch (sd->orient) 353 switch (sd->orient)
355 { 354 {
356 case ELM_PANEL_ORIENT_TOP: 355 case ELM_PANEL_ORIENT_TOP:
@@ -462,7 +461,6 @@ _panel_toggle(void *data EINA_UNUSED,
462 } 461 }
463 462
464 //if the panel is hidden, make this thing unfocusable 463 //if the panel is hidden, make this thing unfocusable
465 elm_widget_tree_unfocusable_set(obj, sd->hidden);
466 edje_object_message_signal_process(wd->resize_obj); 464 edje_object_message_signal_process(wd->resize_obj);
467 } 465 }
468 466
@@ -1479,7 +1477,6 @@ _elm_panel_scrollable_set(Eo *obj, Elm_Panel_Data *sd, Eina_Bool scrollable)
1479 evas_object_repeat_events_set(obj, EINA_FALSE); 1477 evas_object_repeat_events_set(obj, EINA_FALSE);
1480 } 1478 }
1481 1479
1482 elm_widget_tree_unfocusable_set(obj, sd->hidden);
1483 edje_object_message_signal_process(sd->panel_edje); 1480 edje_object_message_signal_process(sd->panel_edje);
1484 1481
1485 evas_object_hide(sd->scr_ly); 1482 evas_object_hide(sd->scr_ly);
diff --git a/src/lib/elementary/elm_photo.c b/src/lib/elementary/elm_photo.c
index 92d9aed..765ede2 100644
--- a/src/lib/elementary/elm_photo.c
+++ b/src/lib/elementary/elm_photo.c
@@ -232,7 +232,7 @@ _mouse_up(void *data,
232 ELM_SAFE_FREE(sd->long_press_timer, ecore_timer_del); 232 ELM_SAFE_FREE(sd->long_press_timer, ecore_timer_del);
233 233
234 if (!sd->drag_started) 234 if (!sd->drag_started)
235 efl_event_callback_legacy_call(data, EFL_UI_EVENT_CLICKED, NULL); 235 evas_object_smart_callback_call(data, "clicked", NULL);
236} 236}
237 237
238static void 238static void
diff --git a/src/lib/elementary/elm_photo_eo.c b/src/lib/elementary/elm_photo_eo.c
index 02b8a28..6c49b03 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.c b/src/lib/elementary/elm_plug.c
index 4b1f005..694b85c 100644
--- a/src/lib/elementary/elm_plug.c
+++ b/src/lib/elementary/elm_plug.c
@@ -103,7 +103,7 @@ _on_mouse_up(void *data,
103 if (ev->button != 1) return; 103 if (ev->button != 1) return;
104 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; 104 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
105 105
106 efl_event_callback_legacy_call(data, EFL_UI_EVENT_CLICKED, NULL); 106 evas_object_smart_callback_call(data, "clicked", NULL);
107} 107}
108 108
109EOLIAN static void 109EOLIAN static void
diff --git a/src/lib/elementary/elm_plug_eo.c b/src/lib/elementary/elm_plug_eo.c
index 7dc8c4d..c40f883 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.c b/src/lib/elementary/elm_thumb.c
index 67ac441..98f6541 100644
--- a/src/lib/elementary/elm_thumb.c
+++ b/src/lib/elementary/elm_thumb.c
@@ -63,7 +63,7 @@ _mouse_down_cb(void *data,
63 else sd->on_hold = EINA_FALSE; 63 else sd->on_hold = EINA_FALSE;
64 64
65 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) 65 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
66 efl_event_callback_legacy_call(obj, EFL_UI_EVENT_CLICKED_DOUBLE, NULL); 66 evas_object_smart_callback_call(obj, "clicked", NULL);
67 else 67 else
68 efl_event_callback_legacy_call(obj, ELM_THUMB_EVENT_PRESS, NULL); 68 efl_event_callback_legacy_call(obj, ELM_THUMB_EVENT_PRESS, NULL);
69} 69}
@@ -82,7 +82,7 @@ _mouse_up_cb(void *data,
82 else sd->on_hold = EINA_FALSE; 82 else sd->on_hold = EINA_FALSE;
83 83
84 if (!sd->on_hold) 84 if (!sd->on_hold)
85 efl_event_callback_legacy_call(obj, EFL_UI_EVENT_CLICKED, NULL); 85 evas_object_smart_callback_call(obj, "clicked", NULL);
86 86
87 sd->on_hold = EINA_FALSE; 87 sd->on_hold = EINA_FALSE;
88} 88}
diff --git a/src/lib/elementary/elm_thumb_eo.c b/src/lib/elementary/elm_thumb_eo.c
index d65f2ee..0e57845 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.c b/src/lib/elementary/elm_toolbar.c
index 0efcacb..c3c87b0 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -1731,7 +1731,7 @@ _mouse_clicked_cb(Elm_Toolbar_Item_Data *it,
1731 if (button == 1) 1731 if (button == 1)
1732 { 1732 {
1733 /* regular left click event */ 1733 /* regular left click event */
1734 efl_event_callback_legacy_call(WIDGET(it), EFL_UI_EVENT_CLICKED, EO_OBJ(it)); 1734 evas_object_smart_callback_call(WIDGET(it), "clicked", EO_OBJ(it));
1735 return; 1735 return;
1736 } 1736 }
1737 snprintf(buf, sizeof(buf), "elm,action,click,%d", button); 1737 snprintf(buf, sizeof(buf), "elm,action,click,%d", button);
@@ -2121,7 +2121,7 @@ _long_press_cb(void *data)
2121 if (sd->reorder_mode) 2121 if (sd->reorder_mode)
2122 _item_reorder_start(it); 2122 _item_reorder_start(it);
2123 2123
2124 efl_event_callback_legacy_call(WIDGET(it), EFL_UI_EVENT_LONGPRESSED, EO_OBJ(it)); 2124 evas_object_smart_callback_call(WIDGET(it), "longpressed", EO_OBJ(it));
2125 2125
2126 return ECORE_CALLBACK_CANCEL; 2126 return ECORE_CALLBACK_CANCEL;
2127} 2127}
@@ -2154,7 +2154,7 @@ _mouse_down_cb(Elm_Toolbar_Item_Data *it,
2154 2154
2155 if (ev->button != 1) return; 2155 if (ev->button != 1) return;
2156 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) 2156 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
2157 efl_event_callback_legacy_call(WIDGET(it), EFL_UI_EVENT_CLICKED_DOUBLE, EO_OBJ(it)); 2157 evas_object_smart_callback_call(WIDGET(it), "clicked,double", EO_OBJ(it));
2158 sd->mouse_down = EINA_TRUE; 2158 sd->mouse_down = EINA_TRUE;
2159 sd->long_press = EINA_FALSE; 2159 sd->long_press = EINA_FALSE;
2160 if (sd->long_timer) 2160 if (sd->long_timer)
diff --git a/src/lib/elementary/elm_toolbar_eo.c b/src/lib/elementary/elm_toolbar_eo.c
index 0589b9a..4356aff 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 ff3e112..4123d16 100644
--- a/src/lib/elementary/meson.build
+++ b/src/lib/elementary/meson.build
@@ -176,6 +176,8 @@ pub_eo_files = [
176 'efl_ui_caching_factory.eo', 176 'efl_ui_caching_factory.eo',
177 'efl_ui_widget_factory.eo', 177 'efl_ui_widget_factory.eo',
178 'efl_ui_relative_layout.eo', 178 'efl_ui_relative_layout.eo',
179 'efl_ui_clickable.eo',
180 'efl_ui_clickable_util.eo',
179] 181]
180 182
181foreach eo_file : pub_eo_files 183foreach eo_file : pub_eo_files
@@ -937,7 +939,9 @@ elementary_src = [
937 'efl_ui_homogeneous_model.c', 939 'efl_ui_homogeneous_model.c',
938 'efl_ui_exact_model.c', 940 'efl_ui_exact_model.c',
939 'efl_ui_average_model.c', 941 'efl_ui_average_model.c',
940 'efl_ui_relative_layout.c' 942 'efl_ui_relative_layout.c',
943 'efl_ui_clickable.c',
944 'efl_ui_clickable_util.c',
941] 945]
942 946
943elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl] 947elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl]