summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric.bail@free.fr>2019-02-06 13:48:43 -0500
committerMike Blumenkrantz <zmike@samsung.com>2019-02-06 13:48:43 -0500
commitf484ca0951e4875f926ebbd9f779d38a13659577 (patch)
treee67dfc2db88b882e6e904d4ac6219c9549472cb7
parent917e0aa0feb9a79721953ea632723d26a251a850 (diff)
edje: migrate Eo API to use Eo callback instead of opaque type.
Summary: Depends on D7869 Reviewers: zmike, q66, segfaultxavi, bu5hm4n Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7671 Differential Revision: https://phab.enlightenment.org/D7870
-rw-r--r--src/lib/edje/edje_legacy.c8
-rw-r--r--src/lib/edje/edje_match.c5
-rw-r--r--src/lib/edje/edje_private.h21
-rw-r--r--src/lib/edje/edje_program.c27
-rw-r--r--src/lib/edje/edje_signal.c109
-rw-r--r--src/lib/edje/efl_layout_signal.eo15
-rw-r--r--src/lib/elementary/efl_ui_check.c12
-rw-r--r--src/lib/elementary/efl_ui_grid.c68
-rw-r--r--src/lib/elementary/efl_ui_image_zoomable.c152
-rw-r--r--src/lib/elementary/efl_ui_layout.c18
-rw-r--r--src/lib/elementary/efl_ui_list.c68
-rw-r--r--src/lib/elementary/efl_ui_list_view.c90
-rw-r--r--src/lib/elementary/efl_ui_nstate.c2
-rw-r--r--src/lib/elementary/efl_ui_scroller.c78
-rw-r--r--src/lib/elementary/efl_ui_slider.c10
-rw-r--r--src/lib/elementary/efl_ui_tab_bar.c6
-rw-r--r--src/lib/elementary/efl_ui_text.c20
-rw-r--r--src/lib/elementary/elm_entry.c24
-rw-r--r--src/tests/emotion/emotion_test_main-eo.c22
19 files changed, 416 insertions, 339 deletions
diff --git a/src/lib/edje/edje_legacy.c b/src/lib/edje/edje_legacy.c
index e96e470724..fead8b04be 100644
--- a/src/lib/edje/edje_legacy.c
+++ b/src/lib/edje/edje_legacy.c
@@ -81,7 +81,7 @@ edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const ch
81 81
82 ed = _edje_fetch(obj); 82 ed = _edje_fetch(obj);
83 if (!ed || ed->delete_me) return; 83 if (!ed || ed->delete_me) return;
84 _edje_object_signal_callback_add(ed, emission, source, func, data); 84 _edje_object_signal_callback_add(ed, emission, source, func, NULL, NULL, data);
85} 85}
86 86
87EAPI void * 87EAPI void *
@@ -99,7 +99,8 @@ edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, con
99 emission = eina_stringshare_add(emission); 99 emission = eina_stringshare_add(emission);
100 source = eina_stringshare_add(source); 100 source = eina_stringshare_add(source);
101 101
102 ok = _edje_signal_callback_disable(gp, emission, source, func, data); 102 // We can cast here as the function won't be used and is just going to be used for comparison
103 ok = _edje_signal_callback_disable(gp, emission, source, func, NULL, NULL, data);
103 104
104 // Legacy only 105 // Legacy only
105 if (!ok && !data) 106 if (!ok && !data)
@@ -108,7 +109,8 @@ edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, con
108 { 109 {
109 if (emission == gp->matches->matches[i].signal && 110 if (emission == gp->matches->matches[i].signal &&
110 source == gp->matches->matches[i].source && 111 source == gp->matches->matches[i].source &&
111 func == gp->matches->matches[i].func && 112 func == gp->matches->matches[i].legacy &&
113 gp->flags[i].legacy &&
112 !gp->flags[i].delete_me) 114 !gp->flags[i].delete_me)
113 { 115 {
114 gp->flags[i].delete_me = EINA_TRUE; 116 gp->flags[i].delete_me = EINA_TRUE;
diff --git a/src/lib/edje/edje_match.c b/src/lib/edje/edje_match.c
index 57e319bdb9..7f4065ae96 100644
--- a/src/lib/edje/edje_match.c
+++ b/src/lib/edje/edje_match.c
@@ -553,7 +553,10 @@ edje_match_callback_exec_check_finals(const Edje_Signals_Sources_Patterns *ssp,
553 553
554 if (ed->callbacks->flags[idx].delete_me) continue; 554 if (ed->callbacks->flags[idx].delete_me) continue;
555 555
556 cb->func((void *)ed->callbacks->custom_data[idx], ed->obj, sig, source); 556 if (ed->callbacks->flags[idx].legacy)
557 cb->legacy((void *)ed->callbacks->custom_data[idx], ed->obj, sig, source);
558 else
559 cb->eo((void *)ed->callbacks->custom_data[idx], ed->obj, sig, source);
557 if (_edje_block_break(ed)) 560 if (_edje_block_break(ed))
558 { 561 {
559 r = 0; 562 r = 0;
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index a8349ae372..6b7cf50ffc 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -1048,12 +1048,16 @@ struct _Edje_Signal_Callback_Match
1048{ 1048{
1049 const char *signal; 1049 const char *signal;
1050 const char *source; 1050 const char *source;
1051 Edje_Signal_Cb func; 1051 union {
1052 Edje_Signal_Cb legacy;
1053 EflLayoutSignalCb eo;
1054 };
1052}; 1055};
1053 1056
1054struct _Edje_Signal_Callback_Matches 1057struct _Edje_Signal_Callback_Matches
1055{ 1058{
1056 Edje_Signal_Callback_Match *matches; 1059 Edje_Signal_Callback_Match *matches;
1060 Eina_Free_Cb *free_cb;
1057 1061
1058 Edje_Signals_Sources_Patterns *patterns; 1062 Edje_Signals_Sources_Patterns *patterns;
1059 1063
@@ -1065,6 +1069,7 @@ struct _Edje_Signal_Callback_Matches
1065 1069
1066struct _Edje_Signal_Callback_Flags 1070struct _Edje_Signal_Callback_Flags
1067{ 1071{
1072 Eina_Bool legacy:1;
1068 Eina_Bool delete_me:1; 1073 Eina_Bool delete_me:1;
1069 Eina_Bool just_added:1; 1074 Eina_Bool just_added:1;
1070 Eina_Bool propagate:1; 1075 Eina_Bool propagate:1;
@@ -2424,8 +2429,9 @@ const Eina_Inarray *edje_match_signal_source_hash_get(const char *signal,
2424 const char *source, 2429 const char *source,
2425 const Eina_Rbtree *tree); 2430 const Eina_Rbtree *tree);
2426void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data); 2431void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data);
2427void _edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m); 2432Eina_Bool _edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source,
2428Eina_Bool _edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data); 2433 Edje_Signal_Cb func_legacy,
2434 Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb, void *data);
2429 2435
2430// FIXME remove below 3 eapi decls when edje_convert goes 2436// FIXME remove below 3 eapi decls when edje_convert goes
2431EAPI void _edje_edd_init(void); 2437EAPI void _edje_edd_init(void);
@@ -2548,14 +2554,19 @@ void _edje_callbacks_del(Evas_Object *obj, Edje *ed);
2548void _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed); 2554void _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed);
2549 2555
2550const Edje_Signal_Callback_Group *_edje_signal_callback_alloc(void); 2556const Edje_Signal_Callback_Group *_edje_signal_callback_alloc(void);
2557void _edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m, Edje_Signal_Callback_Flags *flags, void **custom_data);
2551void _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp); 2558void _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp);
2552Eina_Bool _edje_signal_callback_push(Edje_Signal_Callback_Group *cgp, 2559Eina_Bool _edje_signal_callback_push(Edje_Signal_Callback_Group *cgp,
2553 const char *signal, const char *source, 2560 const char *signal, const char *source,
2554 Edje_Signal_Cb func, void *data, 2561 Edje_Signal_Cb func_legacy,
2562 Efl_Signal_Cb func_eo,
2563 Eina_Free_Cb func_free_cb,
2564 void *data,
2555 Eina_Bool propagate); 2565 Eina_Bool propagate);
2556Eina_Bool _edje_signal_callback_disable(Edje_Signal_Callback_Group *cgp, 2566Eina_Bool _edje_signal_callback_disable(Edje_Signal_Callback_Group *cgp,
2557 const char *signal, const char *source, 2567 const char *signal, const char *source,
2558 Edje_Signal_Cb func, void *data); 2568 Edje_Signal_Cb func_legacy,
2569 EflLayoutSignalCb func, Eina_Free_Cb func_free_cb, void *data);
2559 2570
2560EAPI void _edje_edd_init(void); 2571EAPI void _edje_edd_init(void);
2561EAPI void _edje_edd_shutdown(void); 2572EAPI void _edje_edd_shutdown(void);
diff --git a/src/lib/edje/edje_program.c b/src/lib/edje/edje_program.c
index e6a1373adf..9d8f90f6c5 100644
--- a/src/lib/edje/edje_program.c
+++ b/src/lib/edje/edje_program.c
@@ -237,7 +237,9 @@ edje_transition_duration_factor_set(double scale)
237} 237}
238 238
239Eina_Bool 239Eina_Bool
240_edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data) 240_edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source,
241 Edje_Signal_Cb func_legacy,
242 Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb, void *data)
241{ 243{
242 Edje_Signal_Callback_Group *gp; 244 Edje_Signal_Callback_Group *gp;
243 const char *sig; 245 const char *sig;
@@ -252,7 +254,7 @@ _edje_object_signal_callback_add(Edje *ed, const char *emission, const char *sou
252 src = eina_stringshare_add(source); 254 src = eina_stringshare_add(source);
253 255
254 gp = (Edje_Signal_Callback_Group *) ed->callbacks; 256 gp = (Edje_Signal_Callback_Group *) ed->callbacks;
255 ok = _edje_signal_callback_push(gp, sig, src, func, data, EINA_TRUE); 257 ok = _edje_signal_callback_push(gp, sig, src, func_legacy, func_eo, func_free_cb, data, EINA_TRUE);
256 258
257 eina_stringshare_del(sig); 259 eina_stringshare_del(sig);
258 eina_stringshare_del(src); 260 eina_stringshare_del(src);
@@ -267,17 +269,17 @@ edje_object_propagate_callback_add(Evas_Object *obj, Efl_Signal_Cb func, void *d
267 269
268 ed = _edje_fetch(obj); 270 ed = _edje_fetch(obj);
269 if (!ed || ed->delete_me) return; 271 if (!ed || ed->delete_me) return;
270 _edje_object_signal_callback_add(ed, "*", "*", func, data); 272 _edje_object_signal_callback_add(ed, "*", "*", func, NULL, NULL, data);
271} 273}
272 274
273EOLIAN Eina_Bool 275Eina_Bool
274_efl_canvas_layout_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data) 276_efl_canvas_layout_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
275{ 277{
276 return _edje_object_signal_callback_add(ed, emission, source, func, data); 278 return _edje_object_signal_callback_add(ed, emission, source, NULL, func, func_free_cb, func_data);
277} 279}
278 280
279EOLIAN Eina_Bool 281Eina_Bool
280_efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data) 282_efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
281{ 283{
282 Edje_Signal_Callback_Group *gp; 284 Edje_Signal_Callback_Group *gp;
283 Eina_Bool ok; 285 Eina_Bool ok;
@@ -291,7 +293,7 @@ _efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Ed
291 emission = eina_stringshare_add(emission); 293 emission = eina_stringshare_add(emission);
292 source = eina_stringshare_add(source); 294 source = eina_stringshare_add(source);
293 295
294 ok = _edje_signal_callback_disable(gp, emission, source, func, data); 296 ok = _edje_signal_callback_disable(gp, emission, source, NULL, func, func_free_cb, func_data);
295 297
296 eina_stringshare_del(emission); 298 eina_stringshare_del(emission);
297 eina_stringshare_del(source); 299 eina_stringshare_del(source);
@@ -1669,13 +1671,16 @@ _edje_emit_cb(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Da
1669 1671
1670 cb = &m->matches[*i]; 1672 cb = &m->matches[*i];
1671 1673
1672 cb->func((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src); 1674 if (ed->callbacks->flags[*i].legacy)
1675 cb->legacy((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
1676 else
1677 cb->eo((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
1673 if (_edje_block_break(ed)) break; 1678 if (_edje_block_break(ed)) break;
1674 } 1679 }
1675 } 1680 }
1676 1681
1677break_prog: 1682break_prog:
1678 _edje_signal_callback_matches_unref(m); 1683 _edje_signal_callback_matches_unref(m, ed->callbacks->flags, ed->callbacks->custom_data);
1679 1684
1680 _edje_signal_callback_patterns_unref(ssp); 1685 _edje_signal_callback_patterns_unref(ssp);
1681 } 1686 }
diff --git a/src/lib/edje/edje_signal.c b/src/lib/edje/edje_signal.c
index 2f4bab3bd6..e13ec1bcb2 100644
--- a/src/lib/edje/edje_signal.c
+++ b/src/lib/edje/edje_signal.c
@@ -22,7 +22,13 @@ _edje_signal_match_key_cmp(const void *key1, int key1_length EINA_UNUSED, const
22 { 22 {
23 if (a->matches[i].signal != b->matches[i].signal) return a->matches[i].signal - b->matches[i].signal; 23 if (a->matches[i].signal != b->matches[i].signal) return a->matches[i].signal - b->matches[i].signal;
24 if (a->matches[i].source != b->matches[i].source) return a->matches[i].source - b->matches[i].source; 24 if (a->matches[i].source != b->matches[i].source) return a->matches[i].source - b->matches[i].source;
25 if (a->matches[i].func != b->matches[i].func) return (unsigned char *)a->matches[i].func - (unsigned char *)b->matches[i].func; 25 // Callback be it legacy or eo, have the same pointer size and so can be just compared like that
26 if (a->matches[i].legacy != b->matches[i].legacy) return (unsigned char *)a->matches[i].legacy - (unsigned char *)b->matches[i].legacy;
27 if (a->free_cb && b->free_cb &&
28 a->free_cb[i] != b->free_cb[i]) return (unsigned char *)a->free_cb[i] - (unsigned char *)b->free_cb[i];
29 if ((!a->free_cb && b->free_cb) ||
30 (a->free_cb && !b->free_cb))
31 return a->free_cb - b->free_cb;
26 } 32 }
27 return 0; 33 return 0;
28} 34}
@@ -39,11 +45,16 @@ _edje_signal_match_key_hash(const void *key, int key_length EINA_UNUSED)
39#ifdef EFL64 45#ifdef EFL64
40 hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].signal, sizeof (char *)); 46 hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].signal, sizeof (char *));
41 hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].source, sizeof (char *)); 47 hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].source, sizeof (char *));
42 hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].func, sizeof (Edje_Signal_Cb)); 48 hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].legacy, sizeof (Edje_Signal_Cb));
49 if (a->free_cb)
50 hash ^= eina_hash_int64((const unsigned long long int *)&a->free_cb[i], sizeof (Eina_Free_Cb));
43#else 51#else
44 hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].signal, sizeof (char *)); 52 hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].signal, sizeof (char *));
45 hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].source, sizeof (char *)); 53 hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].source, sizeof (char *));
46 hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].func, sizeof (Edje_Signal_Cb)); 54 // Callback be it legacy or eo, have the same pointer size and so using legacy for hash is enough
55 hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].legacy, sizeof (Edje_Signal_Cb));
56 if (a->free_cb)
57 hash ^= eina_hash_int32((const unsigned int *)&a->free_cb[i], sizeof (Eina_Free_Cb));
47#endif 58#endif
48 } 59 }
49 return hash; 60 return hash;
@@ -64,11 +75,17 @@ _edje_signal_callback_matches_dup(const Edje_Signal_Callback_Matches *src)
64 result->patterns = NULL; 75 result->patterns = NULL;
65 EINA_REFCOUNT_REF(result); 76 EINA_REFCOUNT_REF(result);
66 77
78 if (src->free_cb)
79 {
80 result->free_cb = malloc(sizeof (Eina_Free_Cb) * src->matches_count);
81 if (result->free_cb) memcpy(result->free_cb, src->free_cb, sizeof (Eina_Free_Cb) * src->matches_count);
82 }
83
67 for (i = 0; i < src->matches_count; i++) 84 for (i = 0; i < src->matches_count; i++)
68 { 85 {
69 result->matches[i].signal = eina_stringshare_ref(src->matches[i].signal); 86 result->matches[i].signal = eina_stringshare_ref(src->matches[i].signal);
70 result->matches[i].source = eina_stringshare_ref(src->matches[i].source); 87 result->matches[i].source = eina_stringshare_ref(src->matches[i].source);
71 result->matches[i].func = src->matches[i].func; 88 result->matches[i].legacy = src->matches[i].legacy;
72 } 89 }
73 90
74 return result; 91 return result;
@@ -141,14 +158,23 @@ _edje_signal_callback_unset(Edje_Signal_Callback_Group *gp, int idx)
141static void 158static void
142_edje_signal_callback_set(Edje_Signal_Callback_Group *gp, int idx, 159_edje_signal_callback_set(Edje_Signal_Callback_Group *gp, int idx,
143 const char *sig, const char *src, 160 const char *sig, const char *src,
144 Edje_Signal_Cb func, void *data, Edje_Signal_Callback_Flags flags) 161 Edje_Signal_Cb func_legacy,
162 Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb,
163 void *data, Edje_Signal_Callback_Flags flags)
145{ 164{
146 Edje_Signal_Callback_Match *m; 165 Edje_Signal_Callback_Match *m;
147 166
148 m = gp->matches->matches + idx; 167 m = gp->matches->matches + idx;
149 m->signal = eina_stringshare_ref(sig); 168 m->signal = eina_stringshare_ref(sig);
150 m->source = eina_stringshare_ref(src); 169 m->source = eina_stringshare_ref(src);
151 m->func = func; 170 if (func_legacy) m->legacy = func_legacy;
171 else m->eo = func_eo;
172 if (func_free_cb)
173 {
174 if (!gp->matches->free_cb)
175 ((Edje_Signal_Callback_Matches *) gp->matches)->free_cb = calloc(sizeof (Eina_Free_Cb), gp->matches->matches_count);
176 gp->matches->free_cb[idx] = func_free_cb;
177 }
152 178
153 gp->custom_data[idx] = data; 179 gp->custom_data[idx] = data;
154 180
@@ -163,6 +189,11 @@ _edje_signal_callback_grow(Edje_Signal_Callback_Group *gp)
163 tmp = (Edje_Signal_Callback_Matches *)gp->matches; 189 tmp = (Edje_Signal_Callback_Matches *)gp->matches;
164 tmp->matches_count++; 190 tmp->matches_count++;
165 tmp->matches = realloc(tmp->matches, sizeof (Edje_Signal_Callback_Match) * tmp->matches_count); 191 tmp->matches = realloc(tmp->matches, sizeof (Edje_Signal_Callback_Match) * tmp->matches_count);
192 if (tmp->free_cb)
193 {
194 tmp->free_cb = realloc(tmp->free_cb, sizeof (Eina_Free_Cb) * tmp->matches_count);
195 tmp->free_cb[tmp->matches_count - 1] = NULL;
196 }
166 gp->custom_data = realloc(gp->custom_data, sizeof (void *) * tmp->matches_count); 197 gp->custom_data = realloc(gp->custom_data, sizeof (void *) * tmp->matches_count);
167 gp->flags = realloc(gp->flags, sizeof (Edje_Signal_Callback_Flags) * tmp->matches_count); 198 gp->flags = realloc(gp->flags, sizeof (Edje_Signal_Callback_Flags) * tmp->matches_count);
168 199
@@ -172,7 +203,9 @@ _edje_signal_callback_grow(Edje_Signal_Callback_Group *gp)
172Eina_Bool 203Eina_Bool
173_edje_signal_callback_push(Edje_Signal_Callback_Group *gp, 204_edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
174 const char *sig, const char *src, 205 const char *sig, const char *src,
175 Edje_Signal_Cb func, void *data, Eina_Bool propagate) 206 Edje_Signal_Cb func_legacy,
207 Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb,
208 void *data, Eina_Bool propagate)
176{ 209{
177 unsigned int i; 210 unsigned int i;
178 Edje_Signal_Callback_Flags flags; 211 Edje_Signal_Callback_Flags flags;
@@ -181,23 +214,11 @@ _edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
181 flags.delete_me = EINA_FALSE; 214 flags.delete_me = EINA_FALSE;
182 flags.just_added = EINA_TRUE; 215 flags.just_added = EINA_TRUE;
183 flags.propagate = !!propagate; 216 flags.propagate = !!propagate;
217 flags.legacy = !!func_legacy;
184 218
219 // FIXME: properly handle legacy and non legacy case, including free function
185 tmp = (Edje_Signal_Callback_Matches *)gp->matches; 220 tmp = (Edje_Signal_Callback_Matches *)gp->matches;
186 221
187 // let's first try to see if we do find an empty matching stop
188 for (i = 0; i < tmp->matches_count; i++)
189 {
190 if ((sig == tmp->matches[i].signal) &&
191 (src == tmp->matches[i].source) &&
192 (func == tmp->matches[i].func) &&
193 (gp->flags[i].delete_me))
194 {
195 _edje_signal_callback_unset(gp, i);
196 _edje_signal_callback_set(gp, i, sig, src, func, data, flags);
197 return EINA_TRUE;
198 }
199 }
200
201 if (tmp->hashed) 222 if (tmp->hashed)
202 { 223 {
203 if (EINA_REFCOUNT_GET(tmp) == 1) 224 if (EINA_REFCOUNT_GET(tmp) == 1)
@@ -224,7 +245,7 @@ _edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
224 if (gp->flags[i].delete_me) 245 if (gp->flags[i].delete_me)
225 { 246 {
226 _edje_signal_callback_unset(gp, i); 247 _edje_signal_callback_unset(gp, i);
227 _edje_signal_callback_set(gp, i, sig, src, func, data, flags); 248 _edje_signal_callback_set(gp, i, sig, src, func_legacy, func_eo, func_free_cb, data, flags);
228 return EINA_TRUE; 249 return EINA_TRUE;
229 } 250 }
230 } 251 }
@@ -232,7 +253,7 @@ _edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
232 _edje_signal_callback_grow(gp); 253 _edje_signal_callback_grow(gp);
233 // Set propagate and just_added flags 254 // Set propagate and just_added flags
234 _edje_signal_callback_set(gp, tmp->matches_count - 1, 255 _edje_signal_callback_set(gp, tmp->matches_count - 1,
235 sig, src, func, data, flags); 256 sig, src, func_legacy, func_eo, func_free_cb, data, flags);
236 257
237 return EINA_TRUE; 258 return EINA_TRUE;
238} 259}
@@ -260,12 +281,24 @@ _edje_signal_callback_alloc(void)
260} 281}
261 282
262void 283void
263_edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m) 284_edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m, Edje_Signal_Callback_Flags *flags, void **custom_data)
264{ 285{
286 unsigned int i;
287
288 if (m->free_cb)
289 {
290 for (i = 0; i < m->matches_count; ++i)
291 {
292 if (!flags[i].delete_me &&
293 m->free_cb[i])
294 {
295 m->free_cb[i](custom_data[i]);
296 }
297 }
298 }
299
265 EINA_REFCOUNT_UNREF(m) 300 EINA_REFCOUNT_UNREF(m)
266 { 301 {
267 unsigned int i;
268
269 _edje_signal_callback_patterns_unref(m->patterns); 302 _edje_signal_callback_patterns_unref(m->patterns);
270 303
271 if (m->hashed) 304 if (m->hashed)
@@ -292,7 +325,7 @@ _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp)
292 325
293 if (!gp) return; 326 if (!gp) return;
294 327
295 _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches); 328 _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches, gp->flags, gp->custom_data);
296 gp->matches = NULL; 329 gp->matches = NULL;
297 free(gp->flags); 330 free(gp->flags);
298 gp->flags = NULL; 331 gp->flags = NULL;
@@ -304,7 +337,8 @@ _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp)
304Eina_Bool 337Eina_Bool
305_edje_signal_callback_disable(Edje_Signal_Callback_Group *gp, 338_edje_signal_callback_disable(Edje_Signal_Callback_Group *gp,
306 const char *sig, const char *src, 339 const char *sig, const char *src,
307 Edje_Signal_Cb func, void *data) 340 Edje_Signal_Cb func_legacy,
341 EflLayoutSignalCb func, Eina_Free_Cb func_free_cb, void *data)
308{ 342{
309 unsigned int i; 343 unsigned int i;
310 344
@@ -314,10 +348,17 @@ _edje_signal_callback_disable(Edje_Signal_Callback_Group *gp,
314 { 348 {
315 if (sig == gp->matches->matches[i].signal && 349 if (sig == gp->matches->matches[i].signal &&
316 src == gp->matches->matches[i].source && 350 src == gp->matches->matches[i].source &&
317 func == gp->matches->matches[i].func && 351 !gp->flags[i].delete_me &&
318 gp->custom_data[i] == data && 352 ((func == gp->matches->matches[i].eo &&
319 !gp->flags[i].delete_me) 353 (!gp->matches->free_cb || func_free_cb == gp->matches->free_cb[i]) &&
354 gp->custom_data[i] == data &&
355 !gp->flags[i].legacy) ||
356 (func_legacy == gp->matches->matches[i].legacy &&
357 gp->custom_data[i] == data &&
358 gp->flags[i].legacy))
359 )
320 { 360 {
361 if (func && func_free_cb) func_free_cb(data);
321 gp->flags[i].delete_me = EINA_TRUE; 362 gp->flags[i].delete_me = EINA_TRUE;
322 //return gp->custom_data[i]; 363 //return gp->custom_data[i];
323 return EINA_TRUE; 364 return EINA_TRUE;
@@ -341,9 +382,7 @@ _edje_signal_callback_move_last(Edje_Signal_Callback_Group *gp,
341 if (!gp->flags[j].delete_me) 382 if (!gp->flags[j].delete_me)
342 { 383 {
343 _edje_signal_callback_unset(gp, i); 384 _edje_signal_callback_unset(gp, i);
344 m->matches[i].signal = m->matches[j].signal; 385 memcpy(&m->matches[i], &m->matches[j], sizeof (Edje_Signal_Callback_Match));
345 m->matches[i].source = m->matches[j].source;
346 m->matches[i].func = m->matches[j].func;
347 gp->flags[i] = gp->flags[j]; 386 gp->flags[i] = gp->flags[j];
348 gp->custom_data[i] = gp->custom_data[j]; 387 gp->custom_data[i] = gp->custom_data[j];
349 return; 388 return;
@@ -394,7 +433,7 @@ _edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp)
394 } 433 }
395 else 434 else
396 { 435 {
397 _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches); 436 _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches, gp->flags, gp->custom_data);
398 ((Edje_Signal_Callback_Group *)gp)->matches = m; 437 ((Edje_Signal_Callback_Group *)gp)->matches = m;
399 tmp = (Edje_Signal_Callback_Matches *)gp->matches; 438 tmp = (Edje_Signal_Callback_Matches *)gp->matches;
400 EINA_REFCOUNT_REF(tmp); 439 EINA_REFCOUNT_REF(tmp);
diff --git a/src/lib/edje/efl_layout_signal.eo b/src/lib/edje/efl_layout_signal.eo
index 708dc3279a..3b4562e596 100644
--- a/src/lib/edje/efl_layout_signal.eo
+++ b/src/lib/edje/efl_layout_signal.eo
@@ -8,7 +8,14 @@
8 match that. 8 match that.
9*/ 9*/
10 10
11type Efl.Signal_Cb: __undefined_type; [[Signal callback.]] 11function EflLayoutSignalCb {
12 [[EflLayoutSignalCb function that is called when a specifc pair of signal/emision is triggered]]
13 params {
14 @in object: Efl.Layout.Signal; [[The object the callback is being triggered from.]]
15 @in emission: string; [[The name component of the signal.]]
16 @in source: string; [[The source of a signal used as context.]]
17 }
18};
12 19
13interface Efl.Layout.Signal 20interface Efl.Layout.Signal
14{ 21{
@@ -83,9 +90,8 @@ interface Efl.Layout.Signal
83 params { 90 params {
84 @in emission: string; [[The signal's "emission" string]] 91 @in emission: string; [[The signal's "emission" string]]
85 @in source: string; [[The signal's "source" string]] 92 @in source: string; [[The signal's "source" string]]
86 @in func: Efl.Signal_Cb; 93 @in func: EflLayoutSignalCb;
87 [[The callback function to be executed when the signal is emitted.]] 94 [[The callback function to be executed when the signal is emitted.]]
88 @in data: void_ptr; [[A pointer to data to pass to $func.]]
89 } 95 }
90 return: bool; [[$true in case of success, $false in case of error.]] 96 return: bool; [[$true in case of success, $false in case of error.]]
91 } 97 }
@@ -102,9 +108,8 @@ interface Efl.Layout.Signal
102 params { 108 params {
103 @in emission: string; [[The signal's "emission" string]] 109 @in emission: string; [[The signal's "emission" string]]
104 @in source: string; [[The signal's "source" string]] 110 @in source: string; [[The signal's "source" string]]
105 @in func: Efl.Signal_Cb; 111 @in func: EflLayoutSignalCb;
106 [[The callback function to be executed when the signal is emitted.]] 112 [[The callback function to be executed when the signal is emitted.]]
107 @in data: void_ptr; [[A pointer to data to pass to $func.]]
108 } 113 }
109 return: bool; [[$true in case of success, $false in case of error.]] 114 return: bool; [[$true in case of success, $false in case of error.]]
110 } 115 }
diff --git a/src/lib/elementary/efl_ui_check.c b/src/lib/elementary/efl_ui_check.c
index 1b9a19bcf9..6b5dd01645 100644
--- a/src/lib/elementary/efl_ui_check.c
+++ b/src/lib/elementary/efl_ui_check.c
@@ -327,20 +327,20 @@ _efl_ui_check_efl_object_constructor(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED)
327 if (elm_widget_is_legacy(obj)) 327 if (elm_widget_is_legacy(obj))
328 { 328 {
329 efl_layout_signal_callback_add 329 efl_layout_signal_callback_add
330 (wd->resize_obj, "elm,action,check,on", "*", _on_check_on, obj); 330 (wd->resize_obj, "elm,action,check,on", "*", obj, _on_check_on, NULL);
331 efl_layout_signal_callback_add 331 efl_layout_signal_callback_add
332 (wd->resize_obj, "elm,action,check,off", "*", _on_check_off, obj); 332 (wd->resize_obj, "elm,action,check,off", "*", obj, _on_check_off, NULL);
333 efl_layout_signal_callback_add 333 efl_layout_signal_callback_add
334 (wd->resize_obj, "elm,action,check,toggle", "*", _on_check_toggle, obj); 334 (wd->resize_obj, "elm,action,check,toggle", "*", obj, _on_check_toggle, NULL);
335 } 335 }
336 else 336 else
337 { 337 {
338 efl_layout_signal_callback_add 338 efl_layout_signal_callback_add
339 (wd->resize_obj, "efl,action,check,on", "*", _on_check_on, obj); 339 (wd->resize_obj, "efl,action,check,on", "*", obj, _on_check_on, NULL);
340 efl_layout_signal_callback_add 340 efl_layout_signal_callback_add
341 (wd->resize_obj, "efl,action,check,off", "*", _on_check_off, obj); 341 (wd->resize_obj, "efl,action,check,off", "*", obj, _on_check_off, NULL);
342 efl_layout_signal_callback_add 342 efl_layout_signal_callback_add
343 (wd->resize_obj, "efl,action,check,toggle", "*", _on_check_toggle, obj); 343 (wd->resize_obj, "efl,action,check,toggle", "*", obj, _on_check_toggle, NULL);
344 } 344 }
345 345
346 efl_access_object_role_set(obj, EFL_ACCESS_ROLE_CHECK_BOX); 346 efl_access_object_role_set(obj, EFL_ACCESS_ROLE_CHECK_BOX);
diff --git a/src/lib/elementary/efl_ui_grid.c b/src/lib/elementary/efl_ui_grid.c
index 0b2453c08f..4db9968d90 100644
--- a/src/lib/elementary/efl_ui_grid.c
+++ b/src/lib/elementary/efl_ui_grid.c
@@ -435,40 +435,40 @@ _scroll_edje_object_attach(Eo *obj)
435 EFL_UI_GRID_DATA_GET_OR_RETURN(obj, pd); 435 EFL_UI_GRID_DATA_GET_OR_RETURN(obj, pd);
436 436
437 efl_layout_signal_callback_add(obj, "reload", "efl", 437 efl_layout_signal_callback_add(obj, "reload", "efl",
438 _efl_ui_grid_reload_cb, obj); 438 obj, _efl_ui_grid_reload_cb, NULL);
439 efl_layout_signal_callback_add(obj, "drag", "efl.dragable.vbar", 439 efl_layout_signal_callback_add(obj, "drag", "efl.dragable.vbar",
440 _efl_ui_grid_vbar_drag_cb, obj); 440 obj, _efl_ui_grid_vbar_drag_cb, NULL);
441 efl_layout_signal_callback_add(obj, "drag,set", "efl.dragable.vbar", 441 efl_layout_signal_callback_add(obj, "drag,set", "efl.dragable.vbar",
442 _efl_ui_grid_edje_drag_cb, obj); 442 obj, _efl_ui_grid_edje_drag_cb, NULL);
443 efl_layout_signal_callback_add(obj, "drag,start", "efl.dragable.vbar", 443 efl_layout_signal_callback_add(obj, "drag,start", "efl.dragable.vbar",
444 _efl_ui_grid_edje_drag_start_cb, obj); 444 obj, _efl_ui_grid_edje_drag_start_cb, NULL);
445 efl_layout_signal_callback_add(obj, "drag,stop", "efl.dragable.vbar", 445 efl_layout_signal_callback_add(obj, "drag,stop", "efl.dragable.vbar",
446 _efl_ui_grid_edje_drag_stop_cb, obj); 446 obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
447 efl_layout_signal_callback_add(obj, "drag,step", "efl.dragable.vbar", 447 efl_layout_signal_callback_add(obj, "drag,step", "efl.dragable.vbar",
448 _efl_ui_grid_edje_drag_cb, obj); 448 obj, _efl_ui_grid_edje_drag_cb, NULL);
449 efl_layout_signal_callback_add(obj, "drag,page", "efl.dragable.vbar", 449 efl_layout_signal_callback_add(obj, "drag,page", "efl.dragable.vbar",
450 _efl_ui_grid_edje_drag_cb, obj); 450 obj, _efl_ui_grid_edje_drag_cb, NULL);
451 efl_layout_signal_callback_add(obj, "efl,vbar,press", "efl", 451 efl_layout_signal_callback_add(obj, "efl,vbar,press", "efl",
452 _efl_ui_grid_vbar_press_cb, obj); 452 obj, _efl_ui_grid_vbar_press_cb, NULL);
453 efl_layout_signal_callback_add(obj, "efl,vbar,unpress", "efl", 453 efl_layout_signal_callback_add(obj, "efl,vbar,unpress", "efl",
454 _efl_ui_grid_vbar_unpress_cb, obj); 454 obj, _efl_ui_grid_vbar_unpress_cb, NULL);
455 455
456 efl_layout_signal_callback_add(obj, "drag", "efl.dragable.hbar", 456 efl_layout_signal_callback_add(obj, "drag", "efl.dragable.hbar",
457 _efl_ui_grid_hbar_drag_cb, obj); 457 obj, _efl_ui_grid_hbar_drag_cb, NULL);
458 efl_layout_signal_callback_add(obj, "drag,set", "efl.dragable.hbar", 458 efl_layout_signal_callback_add(obj, "drag,set", "efl.dragable.hbar",
459 _efl_ui_grid_edje_drag_cb, obj); 459 obj, _efl_ui_grid_edje_drag_cb, NULL);
460 efl_layout_signal_callback_add(obj, "drag,start", "efl.dragable.hbar", 460 efl_layout_signal_callback_add(obj, "drag,start", "efl.dragable.hbar",
461 _efl_ui_grid_edje_drag_start_cb, obj); 461 obj, _efl_ui_grid_edje_drag_start_cb, NULL);
462 efl_layout_signal_callback_add(obj, "drag,stop", "efl.dragable.hbar", 462 efl_layout_signal_callback_add(obj, "drag,stop", "efl.dragable.hbar",
463 _efl_ui_grid_edje_drag_stop_cb, obj); 463 obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
464 efl_layout_signal_callback_add(obj, "drag,step", "efl.dragable.hbar", 464 efl_layout_signal_callback_add(obj, "drag,step", "efl.dragable.hbar",
465 _efl_ui_grid_edje_drag_cb, obj); 465 obj, _efl_ui_grid_edje_drag_cb, NULL);
466 efl_layout_signal_callback_add(obj, "drag,page", "efl.dragable.hbar", 466 efl_layout_signal_callback_add(obj, "drag,page", "efl.dragable.hbar",
467 _efl_ui_grid_edje_drag_cb, obj); 467 obj, _efl_ui_grid_edje_drag_cb, NULL);
468 efl_layout_signal_callback_add(obj, "efl,hbar,press", "efl", 468 efl_layout_signal_callback_add(obj, "efl,hbar,press", "efl",
469 _efl_ui_grid_hbar_press_cb, obj); 469 obj, _efl_ui_grid_hbar_press_cb, NULL);
470 efl_layout_signal_callback_add(obj, "efl,hbar,unpress", "efl", 470 efl_layout_signal_callback_add(obj, "efl,hbar,unpress", "efl",
471 _efl_ui_grid_hbar_unpress_cb, obj); 471 obj, _efl_ui_grid_hbar_unpress_cb, NULL);
472} 472}
473 473
474static void 474static void
@@ -477,40 +477,40 @@ _scroll_edje_object_detach(Eo *obj)
477 EFL_UI_GRID_DATA_GET_OR_RETURN(obj, pd); 477 EFL_UI_GRID_DATA_GET_OR_RETURN(obj, pd);
478 478
479 efl_layout_signal_callback_del(obj, "reload", "efl", 479 efl_layout_signal_callback_del(obj, "reload", "efl",
480 _efl_ui_grid_reload_cb, obj); 480 obj, _efl_ui_grid_reload_cb, NULL);
481 efl_layout_signal_callback_del(obj, "drag", "efl.dragable.vbar", 481 efl_layout_signal_callback_del(obj, "drag", "efl.dragable.vbar",
482 _efl_ui_grid_vbar_drag_cb, obj); 482 obj, _efl_ui_grid_vbar_drag_cb, NULL);
483 efl_layout_signal_callback_del(obj, "drag,set", "efl.dragable.vbar", 483 efl_layout_signal_callback_del(obj, "drag,set", "efl.dragable.vbar",
484 _efl_ui_grid_edje_drag_cb, obj); 484 obj, _efl_ui_grid_edje_drag_cb, NULL);
485 efl_layout_signal_callback_del(obj, "drag,start", "efl.dragable.vbar", 485 efl_layout_signal_callback_del(obj, "drag,start", "efl.dragable.vbar",
486 _efl_ui_grid_edje_drag_start_cb, obj); 486 obj, _efl_ui_grid_edje_drag_start_cb, NULL);
487 efl_layout_signal_callback_del(obj, "drag,stop", "efl.dragable.vbar", 487 efl_layout_signal_callback_del(obj, "drag,stop", "efl.dragable.vbar",
488 _efl_ui_grid_edje_drag_stop_cb, obj); 488 obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
489 efl_layout_signal_callback_del(obj, "drag,step", "efl.dragable.vbar", 489 efl_layout_signal_callback_del(obj, "drag,step", "efl.dragable.vbar",
490 _efl_ui_grid_edje_drag_cb, obj); 490 obj, _efl_ui_grid_edje_drag_cb, NULL);
491 efl_layout_signal_callback_del(obj, "drag,page", "efl.dragable.vbar", 491 efl_layout_signal_callback_del(obj, "drag,page", "efl.dragable.vbar",
492 _efl_ui_grid_edje_drag_cb, obj); 492 obj, _efl_ui_grid_edje_drag_cb, NULL);
493 efl_layout_signal_callback_del(obj, "efl,vbar,press", "efl", 493 efl_layout_signal_callback_del(obj, "efl,vbar,press", "efl",
494 _efl_ui_grid_vbar_press_cb, obj); 494 obj, _efl_ui_grid_vbar_press_cb, NULL);
495 efl_layout_signal_callback_del(obj, "efl,vbar,unpress", "efl", 495 efl_layout_signal_callback_del(obj, "efl,vbar,unpress", "efl",
496 _efl_ui_grid_vbar_unpress_cb, obj); 496 obj, _efl_ui_grid_vbar_unpress_cb, NULL);
497 497
498 efl_layout_signal_callback_del(obj, "drag", "efl.dragable.hbar", 498 efl_layout_signal_callback_del(obj, "drag", "efl.dragable.hbar",
499 _efl_ui_grid_hbar_drag_cb, obj); 499 obj, _efl_ui_grid_hbar_drag_cb, NULL);
500 efl_layout_signal_callback_del(obj, "drag,set", "efl.dragable.hbar", 500 efl_layout_signal_callback_del(obj, "drag,set", "efl.dragable.hbar",
501 _efl_ui_grid_edje_drag_cb, obj); 501 obj, _efl_ui_grid_edje_drag_cb, NULL);
502 efl_layout_signal_callback_del(obj, "drag,start", "efl.dragable.hbar", 502 efl_layout_signal_callback_del(obj, "drag,start", "efl.dragable.hbar",
503 _efl_ui_grid_edje_drag_start_cb, obj); 503 obj, _efl_ui_grid_edje_drag_start_cb, NULL);
504 efl_layout_signal_callback_del(obj, "drag,stop", "efl.dragable.hbar", 504 efl_layout_signal_callback_del(obj, "drag,stop", "efl.dragable.hbar",
505 _efl_ui_grid_edje_drag_stop_cb, obj); 505 obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
506 efl_layout_signal_callback_del(obj, "drag,step", "efl.dragable.hbar", 506 efl_layout_signal_callback_del(obj, "drag,step", "efl.dragable.hbar",
507 _efl_ui_grid_edje_drag_cb, obj); 507 obj, _efl_ui_grid_edje_drag_cb, NULL);
508 efl_layout_signal_callback_del(obj, "drag,page", "efl.dragable.hbar", 508 efl_layout_signal_callback_del(obj, "drag,page", "efl.dragable.hbar",
509 _efl_ui_grid_edje_drag_cb, obj); 509 obj, _efl_ui_grid_edje_drag_cb, NULL);
510 efl_layout_signal_callback_del(obj, "efl,hbar,press", "efl", 510 efl_layout_signal_callback_del(obj, "efl,hbar,press", "efl",
511 _efl_ui_grid_hbar_press_cb, obj); 511 obj, _efl_ui_grid_hbar_press_cb, NULL);
512 efl_layout_signal_callback_del(obj, "efl,hbar,unpress", "efl", 512 efl_layout_signal_callback_del(obj, "efl,hbar,unpress", "efl",
513 _efl_ui_grid_hbar_unpress_cb, obj); 513 obj, _efl_ui_grid_hbar_unpress_cb, NULL);
514} 514}
515 515
516static void 516static void
diff --git a/src/lib/elementary/efl_ui_image_zoomable.c b/src/lib/elementary/efl_ui_image_zoomable.c
index 2a46ddb29b..9590838c1e 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.c
+++ b/src/lib/elementary/efl_ui_image_zoomable.c
@@ -1610,108 +1610,108 @@ _efl_ui_image_zoomable_edje_object_attach(Eo *obj)
1610 if (elm_widget_is_legacy(obj)) 1610 if (elm_widget_is_legacy(obj))
1611 { 1611 {
1612 efl_layout_signal_callback_add 1612 efl_layout_signal_callback_add
1613 (obj, "reload", "elm", _efl_ui_image_zoomable_reload_cb, obj); 1613 (obj, "reload", "elm", obj, _efl_ui_image_zoomable_reload_cb, NULL);
1614 efl_layout_signal_callback_add 1614 efl_layout_signal_callback_add
1615 (obj, "drag", "elm.dragable.vbar", 1615 (obj, "drag", "elm.dragable.vbar",
1616 _efl_ui_image_zoomable_vbar_drag_cb, obj); 1616 obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
1617 efl_layout_signal_callback_add 1617 efl_layout_signal_callback_add
1618 (obj, "drag,set", "elm.dragable.vbar", 1618 (obj, "drag,set", "elm.dragable.vbar",
1619 _efl_ui_image_zoomable_edje_drag_cb, obj); 1619 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1620 efl_layout_signal_callback_add 1620 efl_layout_signal_callback_add
1621 (obj, "drag,start", "elm.dragable.vbar", 1621 (obj, "drag,start", "elm.dragable.vbar",
1622 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1622 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1623 efl_layout_signal_callback_add 1623 efl_layout_signal_callback_add
1624 (obj, "drag,stop", "elm.dragable.vbar", 1624 (obj, "drag,stop", "elm.dragable.vbar",
1625 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1625 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1626 efl_layout_signal_callback_add 1626 efl_layout_signal_callback_add
1627 (obj, "drag,step", "elm.dragable.vbar", 1627 (obj, "drag,step", "elm.dragable.vbar",
1628 _efl_ui_image_zoomable_edje_drag_cb, obj); 1628 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1629 efl_layout_signal_callback_add 1629 efl_layout_signal_callback_add
1630 (obj, "drag,page", "elm.dragable.vbar", 1630 (obj, "drag,page", "elm.dragable.vbar",
1631 _efl_ui_image_zoomable_edje_drag_cb, obj); 1631 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1632 efl_layout_signal_callback_add 1632 efl_layout_signal_callback_add
1633 (obj, "elm,vbar,press", "elm", 1633 (obj, "elm,vbar,press", "elm",
1634 _efl_ui_image_zoomable_vbar_press_cb, obj); 1634 obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
1635 efl_layout_signal_callback_add 1635 efl_layout_signal_callback_add
1636 (obj, "elm,vbar,unpress", "elm", 1636 (obj, "elm,vbar,unpress", "elm",
1637 _efl_ui_image_zoomable_vbar_unpress_cb, obj); 1637 obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
1638 efl_layout_signal_callback_add 1638 efl_layout_signal_callback_add
1639 (obj, "drag", "elm.dragable.hbar", 1639 (obj, "drag", "elm.dragable.hbar",
1640 _efl_ui_image_zoomable_hbar_drag_cb, obj); 1640 obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
1641 efl_layout_signal_callback_add 1641 efl_layout_signal_callback_add
1642 (obj, "drag,set", "elm.dragable.hbar", 1642 (obj, "drag,set", "elm.dragable.hbar",
1643 _efl_ui_image_zoomable_edje_drag_cb, obj); 1643 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1644 efl_layout_signal_callback_add 1644 efl_layout_signal_callback_add
1645 (obj, "drag,start", "elm.dragable.hbar", 1645 (obj, "drag,start", "elm.dragable.hbar",
1646 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1646 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1647 efl_layout_signal_callback_add 1647 efl_layout_signal_callback_add
1648 (obj, "drag,stop", "elm.dragable.hbar", 1648 (obj, "drag,stop", "elm.dragable.hbar",
1649 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1649 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1650 efl_layout_signal_callback_add 1650 efl_layout_signal_callback_add
1651 (obj, "drag,step", "elm.dragable.hbar", 1651 (obj, "drag,step", "elm.dragable.hbar",
1652 _efl_ui_image_zoomable_edje_drag_cb, obj); 1652 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1653 efl_layout_signal_callback_add 1653 efl_layout_signal_callback_add
1654 (obj, "drag,page", "elm.dragable.hbar", 1654 (obj, "drag,page", "elm.dragable.hbar",
1655 _efl_ui_image_zoomable_edje_drag_cb, obj); 1655 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1656 efl_layout_signal_callback_add 1656 efl_layout_signal_callback_add
1657 (obj, "elm,hbar,press", "elm", 1657 (obj, "elm,hbar,press", "elm",
1658 _efl_ui_image_zoomable_hbar_press_cb, obj); 1658 obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
1659 efl_layout_signal_callback_add 1659 efl_layout_signal_callback_add
1660 (obj, "elm,hbar,unpress", "elm", 1660 (obj, "elm,hbar,unpress", "elm",
1661 _efl_ui_image_zoomable_hbar_unpress_cb, obj); 1661 obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
1662 } 1662 }
1663 else 1663 else
1664 { 1664 {
1665 efl_layout_signal_callback_add 1665 efl_layout_signal_callback_add
1666 (obj, "reload", "efl", _efl_ui_image_zoomable_reload_cb, obj); 1666 (obj, "reload", "efl", obj, _efl_ui_image_zoomable_reload_cb, NULL);
1667 efl_layout_signal_callback_add 1667 efl_layout_signal_callback_add
1668 (obj, "drag", "efl.dragable.vbar", _efl_ui_image_zoomable_vbar_drag_cb, 1668 (obj, "drag", "efl.dragable.vbar",
1669 obj); 1669 obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
1670 efl_layout_signal_callback_add 1670 efl_layout_signal_callback_add
1671 (obj, "drag,set", "efl.dragable.vbar", 1671 (obj, "drag,set", "efl.dragable.vbar",
1672 _efl_ui_image_zoomable_edje_drag_cb, obj); 1672 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1673 efl_layout_signal_callback_add 1673 efl_layout_signal_callback_add
1674 (obj, "drag,start", "efl.dragable.vbar", 1674 (obj, "drag,start", "efl.dragable.vbar",
1675 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1675 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1676 efl_layout_signal_callback_add 1676 efl_layout_signal_callback_add
1677 (obj, "drag,stop", "efl.dragable.vbar", 1677 (obj, "drag,stop", "efl.dragable.vbar",
1678 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1678 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1679 efl_layout_signal_callback_add 1679 efl_layout_signal_callback_add
1680 (obj, "drag,step", "efl.dragable.vbar", 1680 (obj, "drag,step", "efl.dragable.vbar",
1681 _efl_ui_image_zoomable_edje_drag_cb, obj); 1681 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1682 efl_layout_signal_callback_add 1682 efl_layout_signal_callback_add
1683 (obj, "drag,page", "efl.dragable.vbar", 1683 (obj, "drag,page", "efl.dragable.vbar",
1684 _efl_ui_image_zoomable_edje_drag_cb, obj); 1684 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1685 efl_layout_signal_callback_add 1685 efl_layout_signal_callback_add
1686 (obj, "efl,vbar,press", "efl", 1686 (obj, "efl,vbar,press", "efl",
1687 _efl_ui_image_zoomable_vbar_press_cb, obj); 1687 obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
1688 efl_layout_signal_callback_add 1688 efl_layout_signal_callback_add
1689 (obj, "efl,vbar,unpress", "efl", 1689 (obj, "efl,vbar,unpress", "efl",
1690 _efl_ui_image_zoomable_vbar_unpress_cb, obj); 1690 obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
1691 efl_layout_signal_callback_add 1691 efl_layout_signal_callback_add
1692 (obj, "drag", "efl.dragable.hbar", _efl_ui_image_zoomable_hbar_drag_cb, 1692 (obj, "drag", "efl.dragable.hbar",
1693 obj); 1693 obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
1694 efl_layout_signal_callback_add 1694 efl_layout_signal_callback_add
1695 (obj, "drag,set", "efl.dragable.hbar", 1695 (obj, "drag,set", "efl.dragable.hbar",
1696 _efl_ui_image_zoomable_edje_drag_cb, obj); 1696 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1697 efl_layout_signal_callback_add 1697 efl_layout_signal_callback_add
1698 (obj, "drag,start", "efl.dragable.hbar", 1698 (obj, "drag,start", "efl.dragable.hbar",
1699 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1699 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1700 efl_layout_signal_callback_add 1700 efl_layout_signal_callback_add
1701 (obj, "drag,stop", "efl.dragable.hbar", 1701 (obj, "drag,stop", "efl.dragable.hbar",
1702 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1702 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1703 efl_layout_signal_callback_add 1703 efl_layout_signal_callback_add
1704 (obj, "drag,step", "efl.dragable.hbar", 1704 (obj, "drag,step", "efl.dragable.hbar",
1705 _efl_ui_image_zoomable_edje_drag_cb, obj); 1705 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1706 efl_layout_signal_callback_add 1706 efl_layout_signal_callback_add
1707 (obj, "drag,page", "efl.dragable.hbar", 1707 (obj, "drag,page", "efl.dragable.hbar",
1708 _efl_ui_image_zoomable_edje_drag_cb, obj); 1708 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1709 efl_layout_signal_callback_add 1709 efl_layout_signal_callback_add
1710 (obj, "efl,hbar,press", "efl", 1710 (obj, "efl,hbar,press", "efl",
1711 _efl_ui_image_zoomable_hbar_press_cb, obj); 1711 obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
1712 efl_layout_signal_callback_add 1712 efl_layout_signal_callback_add
1713 (obj, "efl,hbar,unpress", "efl", 1713 (obj, "efl,hbar,unpress", "efl",
1714 _efl_ui_image_zoomable_hbar_unpress_cb, obj); 1714 obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
1715 } 1715 }
1716} 1716}
1717 1717
@@ -1721,108 +1721,108 @@ _efl_ui_image_zoomable_edje_object_detach(Evas_Object *obj)
1721 if (elm_widget_is_legacy(obj)) 1721 if (elm_widget_is_legacy(obj))
1722 { 1722 {
1723 efl_layout_signal_callback_del 1723 efl_layout_signal_callback_del
1724 (obj, "reload", "elm", _efl_ui_image_zoomable_reload_cb, obj); 1724 (obj, "reload", "elm", obj, _efl_ui_image_zoomable_reload_cb, NULL);
1725 efl_layout_signal_callback_del 1725 efl_layout_signal_callback_del
1726 (obj, "drag", "elm.dragable.vbar", 1726 (obj, "drag", "elm.dragable.vbar",
1727 _efl_ui_image_zoomable_vbar_drag_cb, obj); 1727 obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
1728 efl_layout_signal_callback_del 1728 efl_layout_signal_callback_del
1729 (obj, "drag,set", "elm.dragable.vbar", 1729 (obj, "drag,set", "elm.dragable.vbar",
1730 _efl_ui_image_zoomable_edje_drag_cb, obj); 1730 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1731 efl_layout_signal_callback_del 1731 efl_layout_signal_callback_del
1732 (obj, "drag,start", "elm.dragable.vbar", 1732 (obj, "drag,start", "elm.dragable.vbar",
1733 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1733 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1734 efl_layout_signal_callback_del 1734 efl_layout_signal_callback_del
1735 (obj, "drag,stop", "elm.dragable.vbar", 1735 (obj, "drag,stop", "elm.dragable.vbar",
1736 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1736 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1737 efl_layout_signal_callback_del 1737 efl_layout_signal_callback_del
1738 (obj, "drag,step", "elm.dragable.vbar", 1738 (obj, "drag,step", "elm.dragable.vbar",
1739 _efl_ui_image_zoomable_edje_drag_cb, obj); 1739 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1740 efl_layout_signal_callback_del 1740 efl_layout_signal_callback_del
1741 (obj, "drag,page", "elm.dragable.vbar", 1741 (obj, "drag,page", "elm.dragable.vbar",
1742 _efl_ui_image_zoomable_edje_drag_cb, obj); 1742 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1743 efl_layout_signal_callback_del 1743 efl_layout_signal_callback_del
1744 (obj, "elm,vbar,press", "elm", 1744 (obj, "elm,vbar,press", "elm",
1745 _efl_ui_image_zoomable_vbar_press_cb, obj); 1745 obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
1746 efl_layout_signal_callback_del 1746 efl_layout_signal_callback_del
1747 (obj, "elm,vbar,unpress", "elm", 1747 (obj, "elm,vbar,unpress", "elm",
1748 _efl_ui_image_zoomable_vbar_unpress_cb, obj); 1748 obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
1749 efl_layout_signal_callback_del 1749 efl_layout_signal_callback_del
1750 (obj, "drag", "elm.dragable.hbar", 1750 (obj, "drag", "elm.dragable.hbar",
1751 _efl_ui_image_zoomable_hbar_drag_cb, obj); 1751 obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
1752 efl_layout_signal_callback_del 1752 efl_layout_signal_callback_del
1753 (obj, "drag,set", "elm.dragable.hbar", 1753 (obj, "drag,set", "elm.dragable.hbar",
1754 _efl_ui_image_zoomable_edje_drag_cb, obj); 1754 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1755 efl_layout_signal_callback_del 1755 efl_layout_signal_callback_del
1756 (obj, "drag,start", "elm.dragable.hbar", 1756 (obj, "drag,start", "elm.dragable.hbar",
1757 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1757 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1758 efl_layout_signal_callback_del 1758 efl_layout_signal_callback_del
1759 (obj, "drag,stop", "elm.dragable.hbar", 1759 (obj, "drag,stop", "elm.dragable.hbar",
1760 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1760 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1761 efl_layout_signal_callback_del 1761 efl_layout_signal_callback_del
1762 (obj, "drag,step", "elm.dragable.hbar", 1762 (obj, "drag,step", "elm.dragable.hbar",
1763 _efl_ui_image_zoomable_edje_drag_cb, obj); 1763 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1764 efl_layout_signal_callback_del 1764 efl_layout_signal_callback_del
1765 (obj, "drag,page", "elm.dragable.hbar", 1765 (obj, "drag,page", "elm.dragable.hbar",
1766 _efl_ui_image_zoomable_edje_drag_cb, obj); 1766 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1767 efl_layout_signal_callback_del 1767 efl_layout_signal_callback_del
1768 (obj, "elm,hbar,press", "elm", 1768 (obj, "elm,hbar,press", "elm",
1769 _efl_ui_image_zoomable_hbar_press_cb, obj); 1769 obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
1770 efl_layout_signal_callback_del 1770 efl_layout_signal_callback_del
1771 (obj, "elm,hbar,unpress", "elm", 1771 (obj, "elm,hbar,unpress", "elm",
1772 _efl_ui_image_zoomable_hbar_unpress_cb, obj); 1772 obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
1773 } 1773 }
1774 else 1774 else
1775 { 1775 {
1776 efl_layout_signal_callback_del 1776 efl_layout_signal_callback_del
1777 (obj, "reload", "efl", _efl_ui_image_zoomable_reload_cb, obj); 1777 (obj, "reload", "efl", obj, _efl_ui_image_zoomable_reload_cb, NULL);
1778 efl_layout_signal_callback_del 1778 efl_layout_signal_callback_del
1779 (obj, "drag", "efl.dragable.vbar", 1779 (obj, "drag", "efl.dragable.vbar",
1780 _efl_ui_image_zoomable_vbar_drag_cb, obj); 1780 obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
1781 efl_layout_signal_callback_del 1781 efl_layout_signal_callback_del
1782 (obj, "drag,set", "efl.dragable.vbar", 1782 (obj, "drag,set", "efl.dragable.vbar",
1783 _efl_ui_image_zoomable_edje_drag_cb, obj); 1783 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1784 efl_layout_signal_callback_del 1784 efl_layout_signal_callback_del
1785 (obj, "drag,start", "efl.dragable.vbar", 1785 (obj, "drag,start", "efl.dragable.vbar",
1786 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1786 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1787 efl_layout_signal_callback_del 1787 efl_layout_signal_callback_del
1788 (obj, "drag,stop", "efl.dragable.vbar", 1788 (obj, "drag,stop", "efl.dragable.vbar",
1789 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1789 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1790 efl_layout_signal_callback_del 1790 efl_layout_signal_callback_del
1791 (obj, "drag,step", "efl.dragable.vbar", 1791 (obj, "drag,step", "efl.dragable.vbar",
1792 _efl_ui_image_zoomable_edje_drag_cb, obj); 1792 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1793 efl_layout_signal_callback_del 1793 efl_layout_signal_callback_del
1794 (obj, "drag,page", "efl.dragable.vbar", 1794 (obj, "drag,page", "efl.dragable.vbar",
1795 _efl_ui_image_zoomable_edje_drag_cb, obj); 1795 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1796 efl_layout_signal_callback_del 1796 efl_layout_signal_callback_del
1797 (obj, "efl,vbar,press", "efl", 1797 (obj, "efl,vbar,press", "efl",
1798 _efl_ui_image_zoomable_vbar_press_cb, obj); 1798 obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
1799 efl_layout_signal_callback_del 1799 efl_layout_signal_callback_del
1800 (obj, "efl,vbar,unpress", "efl", 1800 (obj, "efl,vbar,unpress", "efl",
1801 _efl_ui_image_zoomable_vbar_unpress_cb, obj); 1801 obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
1802 efl_layout_signal_callback_del 1802 efl_layout_signal_callback_del
1803 (obj, "drag", "efl.dragable.hbar", 1803 (obj, "drag", "efl.dragable.hbar",
1804 _efl_ui_image_zoomable_hbar_drag_cb, obj); 1804 obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
1805 efl_layout_signal_callback_del 1805 efl_layout_signal_callback_del
1806 (obj, "drag,set", "efl.dragable.hbar", 1806 (obj, "drag,set", "efl.dragable.hbar",
1807 _efl_ui_image_zoomable_edje_drag_cb, obj); 1807 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1808 efl_layout_signal_callback_del 1808 efl_layout_signal_callback_del
1809 (obj, "drag,start", "efl.dragable.hbar", 1809 (obj, "drag,start", "efl.dragable.hbar",
1810 _efl_ui_image_zoomable_edje_drag_start_cb, obj); 1810 obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
1811 efl_layout_signal_callback_del 1811 efl_layout_signal_callback_del
1812 (obj, "drag,stop", "efl.dragable.hbar", 1812 (obj, "drag,stop", "efl.dragable.hbar",
1813 _efl_ui_image_zoomable_edje_drag_stop_cb, obj); 1813 obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
1814 efl_layout_signal_callback_del 1814 efl_layout_signal_callback_del
1815 (obj, "drag,step", "efl.dragable.hbar", 1815 (obj, "drag,step", "efl.dragable.hbar",
1816 _efl_ui_image_zoomable_edje_drag_cb, obj); 1816 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1817 efl_layout_signal_callback_del 1817 efl_layout_signal_callback_del
1818 (obj, "drag,page", "efl.dragable.hbar", 1818 (obj, "drag,page", "efl.dragable.hbar",
1819 _efl_ui_image_zoomable_edje_drag_cb, obj); 1819 obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
1820 efl_layout_signal_callback_del 1820 efl_layout_signal_callback_del
1821 (obj, "efl,hbar,press", "efl", 1821 (obj, "efl,hbar,press", "efl",
1822 _efl_ui_image_zoomable_hbar_press_cb, obj); 1822 obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
1823 efl_layout_signal_callback_del 1823 efl_layout_signal_callback_del
1824 (obj, "efl,hbar,unpress", "efl", 1824 (obj, "efl,hbar,unpress", "efl",
1825 _efl_ui_image_zoomable_hbar_unpress_cb, obj); 1825 obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
1826 } 1826 }
1827} 1827}
1828 1828
@@ -1999,23 +1999,27 @@ _efl_ui_image_zoomable_efl_layout_group_group_size_max_get(const Eo *obj EINA_UN
1999} 1999}
2000 2000
2001EOLIAN static Eina_Bool 2001EOLIAN static Eina_Bool
2002_efl_ui_image_zoomable_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 2002_efl_ui_image_zoomable_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Image_Zoomable_Data *pd EINA_UNUSED,
2003 const char *emission, const char *source,
2004 void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
2003{ 2005{
2004 Eina_Bool ok; 2006 Eina_Bool ok;
2005 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 2007 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
2006 2008
2007 ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_cb, data); 2009 ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_data, func, func_free_cb);
2008 2010
2009 return ok; 2011 return ok;
2010} 2012}
2011 2013
2012EOLIAN static Eina_Bool 2014EOLIAN static Eina_Bool
2013_efl_ui_image_zoomable_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 2015_efl_ui_image_zoomable_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Image_Zoomable_Data *pd EINA_UNUSED,
2016 const char *emission, const char *source,
2017 void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
2014{ 2018{
2015 Eina_Bool ok; 2019 Eina_Bool ok;
2016 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 2020 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
2017 2021
2018 ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_cb, data); 2022 ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_data, func, func_free_cb);
2019 2023
2020 return ok; 2024 return ok;
2021} 2025}
diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c
index 798d0e8646..034cd04870 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -945,20 +945,20 @@ _efl_ui_layout_efl_layout_signal_signal_emit(Eo *obj, Efl_Ui_Layout_Data *_pd EI
945 efl_layout_signal_emit(wd->resize_obj, emission, source); 945 efl_layout_signal_emit(wd->resize_obj, emission, source);
946} 946}
947 947
948EOLIAN static Eina_Bool 948static Eina_Bool
949_efl_ui_layout_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *emission, const char *source, Efl_Signal_Cb func, void *data) 949_efl_ui_layout_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
950{ 950{
951 // Don't do anything else than call forward here 951 // Don't do anything else than call forward here
952 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 952 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
953 return efl_layout_signal_callback_add(wd->resize_obj, emission, source, func, data); 953 return efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_data, func, func_free_cb);
954} 954}
955 955
956EOLIAN static Eina_Bool 956static Eina_Bool
957_efl_ui_layout_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func, void *data) 957_efl_ui_layout_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
958{ 958{
959 // Don't do anything else than call forward here 959 // Don't do anything else than call forward here
960 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 960 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
961 return efl_layout_signal_callback_del(wd->resize_obj, emission, source, func, data); 961 return efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_data, func, func_free_cb);
962} 962}
963 963
964// TODO: 964// TODO:
@@ -2862,7 +2862,7 @@ _elm_layout_signal_callback_add_legacy(Eo *obj, Eo *edje, Eina_List **p_edje_sig
2862 esd->data = data; 2862 esd->data = data;
2863 *p_edje_signals = eina_list_append(*p_edje_signals, esd); 2863 *p_edje_signals = eina_list_append(*p_edje_signals, esd);
2864 2864
2865 efl_layout_signal_callback_add(edje, emission, source, 2865 edje_object_signal_callback_add(edje, emission, source,
2866 _edje_signal_callback, esd); 2866 _edje_signal_callback, esd);
2867} 2867}
2868 2868
@@ -2905,8 +2905,8 @@ _elm_layout_signal_callback_del_legacy(Eo *obj EINA_UNUSED, Eo *edje, Eina_List
2905 { 2905 {
2906 *p_edje_signals = eina_list_remove_list(*p_edje_signals, l); 2906 *p_edje_signals = eina_list_remove_list(*p_edje_signals, l);
2907 2907
2908 efl_layout_signal_callback_del(edje, emission, source, 2908 edje_object_signal_callback_del_full(edje, emission, source,
2909 _edje_signal_callback, esd); 2909 _edje_signal_callback, esd);
2910 2910
2911 eina_stringshare_del(esd->emission); 2911 eina_stringshare_del(esd->emission);
2912 eina_stringshare_del(esd->source); 2912 eina_stringshare_del(esd->source);
diff --git a/src/lib/elementary/efl_ui_list.c b/src/lib/elementary/efl_ui_list.c
index 045346ceee..1a0f9aa812 100644
--- a/src/lib/elementary/efl_ui_list.c
+++ b/src/lib/elementary/efl_ui_list.c
@@ -255,57 +255,57 @@ _scroll_edje_object_attach(Eo *obj)
255 255
256 efl_layout_signal_callback_add 256 efl_layout_signal_callback_add
257 (obj, "reload", "efl", 257 (obj, "reload", "efl",
258 _efl_ui_list_reload_cb, obj); 258 obj, _efl_ui_list_reload_cb, NULL);
259 efl_layout_signal_callback_add 259 efl_layout_signal_callback_add
260 (obj, "drag", "efl.dragable.vbar", 260 (obj, "drag", "efl.dragable.vbar",
261 _efl_ui_list_vbar_drag_cb, obj); 261 obj, _efl_ui_list_vbar_drag_cb, NULL);
262 efl_layout_signal_callback_add 262 efl_layout_signal_callback_add
263 (obj, "drag,set", "efl.dragable.vbar", 263 (obj, "drag,set", "efl.dragable.vbar",
264 _efl_ui_list_edje_drag_cb, obj); 264 obj, _efl_ui_list_edje_drag_cb, NULL);
265 efl_layout_signal_callback_add 265 efl_layout_signal_callback_add
266 (obj, "drag,start", "efl.dragable.vbar", 266 (obj, "drag,start", "efl.dragable.vbar",
267 _efl_ui_list_edje_drag_start_cb, obj); 267 obj, _efl_ui_list_edje_drag_start_cb, NULL);
268 efl_layout_signal_callback_add 268 efl_layout_signal_callback_add
269 (obj, "drag,stop", "efl.dragable.vbar", 269 (obj, "drag,stop", "efl.dragable.vbar",
270 _efl_ui_list_edje_drag_stop_cb, obj); 270 obj, _efl_ui_list_edje_drag_stop_cb, NULL);
271 efl_layout_signal_callback_add 271 efl_layout_signal_callback_add
272 (obj, "drag,step", "efl.dragable.vbar", 272 (obj, "drag,step", "efl.dragable.vbar",
273 _efl_ui_list_edje_drag_cb, obj); 273 obj, _efl_ui_list_edje_drag_cb, NULL);
274 efl_layout_signal_callback_add 274 efl_layout_signal_callback_add
275 (obj, "drag,page", "efl.dragable.vbar", 275 (obj, "drag,page", "efl.dragable.vbar",
276 _efl_ui_list_edje_drag_cb, obj); 276 obj, _efl_ui_list_edje_drag_cb, NULL);
277 efl_layout_signal_callback_add 277 efl_layout_signal_callback_add
278 (obj, "efl,vbar,press", "efl", 278 (obj, "efl,vbar,press", "efl",
279 _efl_ui_list_vbar_press_cb, obj); 279 obj, _efl_ui_list_vbar_press_cb, NULL);
280 efl_layout_signal_callback_add 280 efl_layout_signal_callback_add
281 (obj, "efl,vbar,unpress", "efl", 281 (obj, "efl,vbar,unpress", "efl",
282 _efl_ui_list_vbar_unpress_cb, obj); 282 obj, _efl_ui_list_vbar_unpress_cb, NULL);
283 283
284 /* FIXME: Horizontal Scroll is not yet supported in the list. 284 /* FIXME: Horizontal Scroll is not yet supported in the list.
285 efl_layout_signal_callback_add 285 efl_layout_signal_callback_add
286 (obj, "drag", "efl.dragable.hbar", 286 (obj, "drag", "efl.dragable.hbar",
287 _efl_ui_list_hbar_drag_cb, obj); 287 obj, _efl_ui_list_hbar_drag_cb, NULL);
288 efl_layout_signal_callback_add 288 efl_layout_signal_callback_add
289 (obj, "drag,set", "efl.dragable.hbar", 289 (obj, "drag,set", "efl.dragable.hbar",
290 _efl_ui_list_edje_drag_cb, obj); 290 obj, _efl_ui_list_edje_drag_cb, NULL);
291 efl_layout_signal_callback_add 291 efl_layout_signal_callback_add
292 (obj, "drag,start", "efl.dragable.hbar", 292 (obj, "drag,start", "efl.dragable.hbar",
293 _efl_ui_list_edje_drag_start_cb, obj); 293 obj, _efl_ui_list_edje_drag_start_cb, NULL);
294 efl_layout_signal_callback_add 294 efl_layout_signal_callback_add
295 (obj, "drag,stop", "efl.dragable.hbar", 295 (obj, "drag,stop", "efl.dragable.hbar",
296 _efl_ui_list_edje_drag_stop_cb, obj); 296 obj, _efl_ui_list_edje_drag_stop_cb, NULL);
297 efl_layout_signal_callback_add 297 efl_layout_signal_callback_add
298 (obj, "drag,step", "efl.dragable.hbar", 298 (obj, "drag,step", "efl.dragable.hbar",
299 _efl_ui_list_edje_drag_cb, obj); 299 obj, _efl_ui_list_edje_drag_cb, NULL);
300 efl_layout_signal_callback_add 300 efl_layout_signal_callback_add
301 (obj, "drag,page", "efl.dragable.hbar", 301 (obj, "drag,page", "efl.dragable.hbar",
302 _efl_ui_list_edje_drag_cb, obj); 302 obj, _efl_ui_list_edje_drag_cb, NULL);
303 efl_layout_signal_callback_add 303 efl_layout_signal_callback_add
304 (obj, "efl,hbar,press", "efl", 304 (obj, "efl,hbar,press", "efl",
305 _efl_ui_list_hbar_press_cb, obj); 305 obj, _efl_ui_list_hbar_press_cb, NULL);
306 efl_layout_signal_callback_add 306 efl_layout_signal_callback_add
307 (obj, "efl,hbar,unpress", "efl", 307 (obj, "efl,hbar,unpress", "efl",
308 _efl_ui_list_hbar_unpress_cb, obj); 308 obj, _efl_ui_list_hbar_unpress_cb, NULL);
309 */ 309 */
310} 310}
311 311
@@ -316,57 +316,57 @@ _scroll_edje_object_detach(Eo *obj)
316 316
317 efl_layout_signal_callback_del 317 efl_layout_signal_callback_del
318 (obj, "reload", "efl", 318 (obj, "reload", "efl",
319 _efl_ui_list_reload_cb, obj); 319 obj, _efl_ui_list_reload_cb, NULL);
320 efl_layout_signal_callback_del 320 efl_layout_signal_callback_del
321 (obj, "drag", "efl.dragable.vbar", 321 (obj, "drag", "efl.dragable.vbar",
322 _efl_ui_list_vbar_drag_cb, obj); 322 obj, _efl_ui_list_vbar_drag_cb, NULL);
323 efl_layout_signal_callback_del 323 efl_layout_signal_callback_del
324 (obj, "drag,set", "efl.dragable.vbar", 324 (obj, "drag,set", "efl.dragable.vbar",
325 _efl_ui_list_edje_drag_cb, obj); 325 obj, _efl_ui_list_edje_drag_cb, NULL);
326 efl_layout_signal_callback_del 326 efl_layout_signal_callback_del
327 (obj, "drag,start", "efl.dragable.vbar", 327 (obj, "drag,start", "efl.dragable.vbar",
328 _efl_ui_list_edje_drag_start_cb, obj); 328 obj, _efl_ui_list_edje_drag_start_cb, NULL);
329 efl_layout_signal_callback_del 329 efl_layout_signal_callback_del
330 (obj, "drag,stop", "efl.dragable.vbar", 330 (obj, "drag,stop", "efl.dragable.vbar",
331 _efl_ui_list_edje_drag_stop_cb, obj); 331 obj, _efl_ui_list_edje_drag_stop_cb, NULL);
332 efl_layout_signal_callback_del 332 efl_layout_signal_callback_del
333 (obj, "drag,step", "efl.dragable.vbar", 333 (obj, "drag,step", "efl.dragable.vbar",
334 _efl_ui_list_edje_drag_cb, obj); 334 obj, _efl_ui_list_edje_drag_cb, NULL);
335 efl_layout_signal_callback_del 335 efl_layout_signal_callback_del
336 (obj, "drag,page", "efl.dragable.vbar", 336 (obj, "drag,page", "efl.dragable.vbar",
337 _efl_ui_list_edje_drag_cb, obj); 337 obj, _efl_ui_list_edje_drag_cb, NULL);
338 efl_layout_signal_callback_del 338 efl_layout_signal_callback_del
339 (obj, "efl,vbar,press", "efl", 339 (obj, "efl,vbar,press", "efl",
340 _efl_ui_list_vbar_press_cb, obj); 340 obj, _efl_ui_list_vbar_press_cb, NULL);
341 efl_layout_signal_callback_del 341 efl_layout_signal_callback_del
342 (obj, "efl,vbar,unpress", "efl", 342 (obj, "efl,vbar,unpress", "efl",
343 _efl_ui_list_vbar_unpress_cb, obj); 343 obj, _efl_ui_list_vbar_unpress_cb, NULL);
344 344
345 /* FIXME: Horizontal Scroll is not yet supported in the list. 345 /* FIXME: Horizontal Scroll is not yet supported in the list.
346 efl_layout_signal_callback_del 346 efl_layout_signal_callback_del
347 (obj, "drag", "efl.dragable.hbar", 347 (obj, "drag", "efl.dragable.hbar",
348 _efl_ui_list_hbar_drag_cb, obj); 348 obj, _efl_ui_list_hbar_drag_cb, NULL);
349 efl_layout_signal_callback_del 349 efl_layout_signal_callback_del
350 (obj, "drag,set", "efl.dragable.hbar", 350 (obj, "drag,set", "efl.dragable.hbar",
351 _efl_ui_list_edje_drag_cb, obj); 351 obj, _efl_ui_list_edje_drag_cb, NULL);
352 efl_layout_signal_callback_del 352 efl_layout_signal_callback_del
353 (obj, "drag,start", "efl.dragable.hbar", 353 (obj, "drag,start", "efl.dragable.hbar",
354 _efl_ui_list_edje_drag_start_cb, obj); 354 obj, _efl_ui_list_edje_drag_start_cb, NULL);
355 efl_layout_signal_callback_del 355 efl_layout_signal_callback_del
356 (obj, "drag,stop", "efl.dragable.hbar", 356 (obj, "drag,stop", "efl.dragable.hbar",
357 _efl_ui_list_edje_drag_stop_cb, obj); 357 obj, _efl_ui_list_edje_drag_stop_cb, NULL);
358 efl_layout_signal_callback_del 358 efl_layout_signal_callback_del
359 (obj, "drag,step", "efl.dragable.hbar", 359 (obj, "drag,step", "efl.dragable.hbar",
360 _efl_ui_list_edje_drag_cb, obj); 360 obj, _efl_ui_list_edje_drag_cb, NULL);
361 efl_layout_signal_callback_del 361 efl_layout_signal_callback_del
362 (obj, "drag,page", "efl.dragable.hbar", 362 (obj, "drag,page", "efl.dragable.hbar",
363 _efl_ui_list_edje_drag_cb, obj); 363 obj, _efl_ui_list_edje_drag_cb, NULL);
364 efl_layout_signal_callback_del 364 efl_layout_signal_callback_del
365 (obj, "efl,hbar,press", "efl", 365 (obj, "efl,hbar,press", "efl",
366 _efl_ui_list_hbar_press_cb, obj); 366 obj, _efl_ui_list_hbar_press_cb, NULL);
367 efl_layout_signal_callback_del 367 efl_layout_signal_callback_del
368 (obj, "efl,hbar,unpress", "efl", 368 (obj, "efl,hbar,unpress", "efl",
369 _efl_ui_list_hbar_unpress_cb, obj); 369 obj, _efl_ui_list_hbar_unpress_cb, NULL);
370 */ 370 */
371} 371}
372 372
diff --git a/src/lib/elementary/efl_ui_list_view.c b/src/lib/elementary/efl_ui_list_view.c
index 6c1d367f67..5481803e4e 100644
--- a/src/lib/elementary/efl_ui_list_view.c
+++ b/src/lib/elementary/efl_ui_list_view.c
@@ -438,24 +438,24 @@ _efl_ui_list_view_bar_hide_cb(void *data, const Efl_Event *event)
438 edje_object_signal_emit(wd->resize_obj, "efl,action,hide,vbar", "efl"); 438 edje_object_signal_emit(wd->resize_obj, "efl,action,hide,vbar", "efl");
439} 439}
440 440
441EOLIAN static Eina_Bool 441static Eina_Bool
442_efl_ui_list_view_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 442_efl_ui_list_view_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
443{ 443{
444 Eina_Bool ok; 444 Eina_Bool ok;
445 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 445 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
446 446
447 ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_cb, data); 447 ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_data, func, func_free_cb);
448 448
449 return ok; 449 return ok;
450} 450}
451 451
452EOLIAN static Eina_Bool 452static Eina_Bool
453_efl_ui_list_view_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 453_efl_ui_list_view_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
454{ 454{
455 Eina_Bool ok; 455 Eina_Bool ok;
456 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); 456 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
457 457
458 ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_cb, data); 458 ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_data, func, func_free_cb);
459 459
460 return ok; 460 return ok;
461} 461}
@@ -464,116 +464,118 @@ static void
464_efl_ui_list_view_edje_object_attach(Eo *obj) 464_efl_ui_list_view_edje_object_attach(Eo *obj)
465{ 465{
466 efl_layout_signal_callback_add 466 efl_layout_signal_callback_add
467 (obj, "reload", "efl", _efl_ui_list_view_reload_cb, obj); 467 (obj, "reload", "efl",
468 obj, _efl_ui_list_view_reload_cb, NULL);
468 //Vertical bar 469 //Vertical bar
469 efl_layout_signal_callback_add 470 efl_layout_signal_callback_add
470 (obj, "drag", "efl.dragable.vbar", 471 (obj, "drag", "efl.dragable.vbar",
471 _efl_ui_list_view_vbar_drag_cb, obj); 472 obj, _efl_ui_list_view_vbar_drag_cb, NULL);
472 efl_layout_signal_callback_add 473 efl_layout_signal_callback_add
473 (obj, "drag,set", "efl.dragable.vbar", 474 (obj, "drag,set", "efl.dragable.vbar",
474 _efl_ui_list_view_edje_drag_cb, obj); 475 obj, _efl_ui_list_view_edje_drag_cb, NULL);
475 efl_layout_signal_callback_add 476 efl_layout_signal_callback_add
476 (obj, "drag,start", "efl.dragable.vbar", 477 (obj, "drag,start", "efl.dragable.vbar",
477 _efl_ui_list_view_edje_drag_start_cb, obj); 478 obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
478 efl_layout_signal_callback_add 479 efl_layout_signal_callback_add
479 (obj, "drag,stop", "efl.dragable.vbar", 480 (obj, "drag,stop", "efl.dragable.vbar",
480 _efl_ui_list_view_edje_drag_stop_cb, obj); 481 obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
481 efl_layout_signal_callback_add 482 efl_layout_signal_callback_add
482 (obj, "drag,step", "efl.dragable.vbar", 483 (obj, "drag,step", "efl.dragable.vbar",
483 _efl_ui_list_view_edje_drag_cb, obj); 484 obj, _efl_ui_list_view_edje_drag_cb, NULL);
484 efl_layout_signal_callback_add 485 efl_layout_signal_callback_add
485 (obj, "drag,page", "efl.dragable.vbar", 486 (obj, "drag,page", "efl.dragable.vbar",
486 _efl_ui_list_view_edje_drag_cb, obj); 487 obj, _efl_ui_list_view_edje_drag_cb, NULL);
487 efl_layout_signal_callback_add 488 efl_layout_signal_callback_add
488 (obj, "efl,vbar,press", "efl", 489 (obj, "efl,vbar,press", "efl",
489 _efl_ui_list_view_vbar_press_cb, obj); 490 obj, _efl_ui_list_view_vbar_press_cb, NULL);
490 efl_layout_signal_callback_add 491 efl_layout_signal_callback_add
491 (obj, "efl,vbar,unpress", "efl", 492 (obj, "efl,vbar,unpress", "efl",
492 _efl_ui_list_view_vbar_unpress_cb, obj); 493 obj, _efl_ui_list_view_vbar_unpress_cb, NULL);
493 494
494 //Horizontal bar 495 //Horizontal bar
495 efl_layout_signal_callback_add 496 efl_layout_signal_callback_add
496 (obj, "drag", "efl.dragable.hbar", 497 (obj, "drag", "efl.dragable.hbar",
497 _efl_ui_list_view_hbar_drag_cb, obj); 498 obj, _efl_ui_list_view_hbar_drag_cb, NULL);
498 efl_layout_signal_callback_add 499 efl_layout_signal_callback_add
499 (obj, "drag,set", "efl.dragable.hbar", 500 (obj, "drag,set", "efl.dragable.hbar",
500 _efl_ui_list_view_edje_drag_cb, obj); 501 obj, _efl_ui_list_view_edje_drag_cb, NULL);
501 efl_layout_signal_callback_add 502 efl_layout_signal_callback_add
502 (obj, "drag,start", "efl.dragable.hbar", 503 (obj, "drag,start", "efl.dragable.hbar",
503 _efl_ui_list_view_edje_drag_start_cb, obj); 504 obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
504 efl_layout_signal_callback_add 505 efl_layout_signal_callback_add
505 (obj, "drag,stop", "efl.dragable.hbar", 506 (obj, "drag,stop", "efl.dragable.hbar",
506 _efl_ui_list_view_edje_drag_stop_cb, obj); 507 obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
507 efl_layout_signal_callback_add 508 efl_layout_signal_callback_add
508 (obj, "drag,step", "efl.dragable.hbar", 509 (obj, "drag,step", "efl.dragable.hbar",
509 _efl_ui_list_view_edje_drag_cb, obj); 510 obj, _efl_ui_list_view_edje_drag_cb, NULL);
510 efl_layout_signal_callback_add 511 efl_layout_signal_callback_add
511 (obj, "drag,page", "efl.dragable.hbar", 512 (obj, "drag,page", "efl.dragable.hbar",
512 _efl_ui_list_view_edje_drag_cb, obj); 513 obj, _efl_ui_list_view_edje_drag_cb, NULL);
513 efl_layout_signal_callback_add 514 efl_layout_signal_callback_add
514 (obj, "efl,hbar,press", "efl", 515 (obj, "efl,hbar,press", "efl",
515 _efl_ui_list_view_hbar_press_cb, obj); 516 obj, _efl_ui_list_view_hbar_press_cb, NULL);
516 efl_layout_signal_callback_add 517 efl_layout_signal_callback_add
517 (obj, "efl,hbar,unpress", "efl", 518 (obj, "efl,hbar,unpress", "efl",
518 _efl_ui_list_view_hbar_unpress_cb, obj); 519 obj, _efl_ui_list_view_hbar_unpress_cb, NULL);
519} 520}
520 521
521static void 522static void
522_efl_ui_list_view_edje_object_detach(Evas_Object *obj) 523_efl_ui_list_view_edje_object_detach(Evas_Object *obj)
523{ 524{
524 efl_layout_signal_callback_del 525 efl_layout_signal_callback_del
525 (obj, "reload", "efl", _efl_ui_list_view_reload_cb, obj); 526 (obj, "reload", "efl",
526 //Vertical bar 527 obj, _efl_ui_list_view_reload_cb, NULL);
528 //Vertical bar
527 efl_layout_signal_callback_del 529 efl_layout_signal_callback_del
528 (obj, "drag", "efl.dragable.vbar", _efl_ui_list_view_vbar_drag_cb, 530 (obj, "drag", "efl.dragable.vbar",
529 obj); 531 obj, _efl_ui_list_view_vbar_drag_cb, NULL);
530 efl_layout_signal_callback_del 532 efl_layout_signal_callback_del
531 (obj, "drag,set", "efl.dragable.vbar", 533 (obj, "drag,set", "efl.dragable.vbar",
532 _efl_ui_list_view_edje_drag_cb, obj); 534 obj, _efl_ui_list_view_edje_drag_cb, NULL);
533 efl_layout_signal_callback_del 535 efl_layout_signal_callback_del
534 (obj, "drag,start", "efl.dragable.vbar", 536 (obj, "drag,start", "efl.dragable.vbar",
535 _efl_ui_list_view_edje_drag_start_cb, obj); 537 obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
536 efl_layout_signal_callback_del 538 efl_layout_signal_callback_del
537 (obj, "drag,stop", "efl.dragable.vbar", 539 (obj, "drag,stop", "efl.dragable.vbar",
538 _efl_ui_list_view_edje_drag_stop_cb, obj); 540 obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
539 efl_layout_signal_callback_del 541 efl_layout_signal_callback_del
540 (obj, "drag,step", "efl.dragable.vbar", 542 (obj, "drag,step", "efl.dragable.vbar",
541 _efl_ui_list_view_edje_drag_cb, obj); 543 obj, _efl_ui_list_view_edje_drag_cb, NULL);
542 efl_layout_signal_callback_del 544 efl_layout_signal_callback_del
543 (obj, "drag,page", "efl.dragable.vbar", 545 (obj, "drag,page", "efl.dragable.vbar",
544 _efl_ui_list_view_edje_drag_cb, obj); 546 obj, _efl_ui_list_view_edje_drag_cb, NULL);
545 efl_layout_signal_callback_del 547 efl_layout_signal_callback_del
546 (obj, "efl,vbar,press", "efl", 548 (obj, "efl,vbar,press", "efl",
547 _efl_ui_list_view_vbar_press_cb, obj); 549 obj, _efl_ui_list_view_vbar_press_cb, NULL);
548 efl_layout_signal_callback_del 550 efl_layout_signal_callback_del
549 (obj, "efl,vbar,unpress", "efl", 551 (obj, "efl,vbar,unpress", "efl",
550 _efl_ui_list_view_vbar_unpress_cb, obj); 552 obj, _efl_ui_list_view_vbar_unpress_cb, NULL);
551 553
552 //Horizontal bar 554 //Horizontal bar
553 efl_layout_signal_callback_del 555 efl_layout_signal_callback_del
554 (obj, "drag", "efl.dragable.hbar", 556 (obj, "drag", "efl.dragable.hbar",
555 _efl_ui_list_view_hbar_drag_cb, obj); 557 obj, _efl_ui_list_view_hbar_drag_cb, NULL);
556 efl_layout_signal_callback_del 558 efl_layout_signal_callback_del
557 (obj, "drag,set", "efl.dragable.hbar", 559 (obj, "drag,set", "efl.dragable.hbar",
558 _efl_ui_list_view_edje_drag_cb, obj); 560 obj, _efl_ui_list_view_edje_drag_cb, NULL);
559 efl_layout_signal_callback_del 561 efl_layout_signal_callback_del
560 (obj, "drag,start", "efl.dragable.hbar", 562 (obj, "drag,start", "efl.dragable.hbar",
561 _efl_ui_list_view_edje_drag_start_cb, obj); 563 obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
562 efl_layout_signal_callback_del 564 efl_layout_signal_callback_del
563 (obj, "drag,stop", "efl.dragable.hbar", 565 (obj, "drag,stop", "efl.dragable.hbar",
564 _efl_ui_list_view_edje_drag_stop_cb, obj); 566 obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
565 efl_layout_signal_callback_del 567 efl_layout_signal_callback_del
566 (obj, "drag,step", "efl.dragable.hbar", 568 (obj, "drag,step", "efl.dragable.hbar",
567 _efl_ui_list_view_edje_drag_cb, obj); 569 obj, _efl_ui_list_view_edje_drag_cb, NULL);
568 efl_layout_signal_callback_del 570 efl_layout_signal_callback_del
569 (obj, "drag,page", "efl.dragable.hbar", 571 (obj, "drag,page", "efl.dragable.hbar",
570 _efl_ui_list_view_edje_drag_cb, obj); 572 obj, _efl_ui_list_view_edje_drag_cb, NULL);
571 efl_layout_signal_callback_del 573 efl_layout_signal_callback_del
572 (obj, "efl,hbar,press", "efl", 574 (obj, "efl,hbar,press", "efl",
573 _efl_ui_list_view_hbar_press_cb, obj); 575 obj, _efl_ui_list_view_hbar_press_cb, NULL);
574 efl_layout_signal_callback_del 576 efl_layout_signal_callback_del
575 (obj, "efl,hbar,unpress", "efl", 577 (obj, "efl,hbar,unpress", "efl",
576 _efl_ui_list_view_hbar_unpress_cb, obj); 578 obj, _efl_ui_list_view_hbar_unpress_cb, NULL);
577} 579}
578 580
579EOLIAN static void 581EOLIAN static void
diff --git a/src/lib/elementary/efl_ui_nstate.c b/src/lib/elementary/efl_ui_nstate.c
index 1ee831e10a..8a16d25830 100644
--- a/src/lib/elementary/efl_ui_nstate.c
+++ b/src/lib/elementary/efl_ui_nstate.c
@@ -45,7 +45,7 @@ _efl_ui_nstate_efl_object_constructor(Eo *obj, Efl_Ui_Nstate_Data *pd)
45 45
46 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); 46 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
47 efl_layout_signal_callback_add 47 efl_layout_signal_callback_add
48 (wd->resize_obj, "efl,action,state,changed", "*", _on_state_changed, obj); 48 (wd->resize_obj, "efl,action,state,changed", "*", obj, _on_state_changed, NULL);
49 49
50 //TODO: Add ATSPI call here 50 //TODO: Add ATSPI call here
51 51
diff --git a/src/lib/elementary/efl_ui_scroller.c b/src/lib/elementary/efl_ui_scroller.c
index f81aa83eb4..ef8cc1a52b 100644
--- a/src/lib/elementary/efl_ui_scroller.c
+++ b/src/lib/elementary/efl_ui_scroller.c
@@ -279,55 +279,56 @@ _scroll_edje_object_attach(Eo *obj)
279 EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, sd); 279 EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, sd);
280 280
281 efl_layout_signal_callback_add 281 efl_layout_signal_callback_add
282 (obj, "reload", "efl", _efl_ui_scroller_reload_cb, obj); 282 (obj, "reload", "efl",
283 obj, _efl_ui_scroller_reload_cb, NULL);
283 efl_layout_signal_callback_add 284 efl_layout_signal_callback_add
284 (obj, "drag", "efl.dragable.vbar", _efl_ui_scroller_vbar_drag_cb, 285 (obj, "drag", "efl.dragable.vbar",
285 obj); 286 obj, _efl_ui_scroller_vbar_drag_cb, NULL);
286 efl_layout_signal_callback_add 287 efl_layout_signal_callback_add
287 (obj, "drag,set", "efl.dragable.vbar", 288 (obj, "drag,set", "efl.dragable.vbar",
288 _efl_ui_scroller_edje_drag_cb, obj); 289 obj, _efl_ui_scroller_edje_drag_cb, NULL);
289 efl_layout_signal_callback_add 290 efl_layout_signal_callback_add
290 (obj, "drag,start", "efl.dragable.vbar", 291 (obj, "drag,start", "efl.dragable.vbar",
291 _efl_ui_scroller_edje_drag_start_cb, obj); 292 obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
292 efl_layout_signal_callback_add 293 efl_layout_signal_callback_add
293 (obj, "drag,stop", "efl.dragable.vbar", 294 (obj, "drag,stop", "efl.dragable.vbar",
294 _efl_ui_scroller_edje_drag_stop_cb, obj); 295 obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
295 efl_layout_signal_callback_add 296 efl_layout_signal_callback_add
296 (obj, "drag,step", "efl.dragable.vbar", 297 (obj, "drag,step", "efl.dragable.vbar",
297 _efl_ui_scroller_edje_drag_cb, obj); 298 obj, _efl_ui_scroller_edje_drag_cb, NULL);
298 efl_layout_signal_callback_add 299 efl_layout_signal_callback_add
299 (obj, "drag,page", "efl.dragable.vbar", 300 (obj, "drag,page", "efl.dragable.vbar",
300 _efl_ui_scroller_edje_drag_cb, obj); 301 obj, _efl_ui_scroller_edje_drag_cb, NULL);
301 efl_layout_signal_callback_add 302 efl_layout_signal_callback_add
302 (obj, "efl,vbar,press", "efl", 303 (obj, "efl,vbar,press", "efl",
303 _efl_ui_scroller_vbar_press_cb, obj); 304 obj, _efl_ui_scroller_vbar_press_cb, NULL);
304 efl_layout_signal_callback_add 305 efl_layout_signal_callback_add
305 (obj, "efl,vbar,unpress", "efl", 306 (obj, "efl,vbar,unpress", "efl",
306 _efl_ui_scroller_vbar_unpress_cb, obj); 307 obj, _efl_ui_scroller_vbar_unpress_cb, NULL);
307 efl_layout_signal_callback_add 308 efl_layout_signal_callback_add
308 (obj, "drag", "efl.dragable.hbar", _efl_ui_scroller_hbar_drag_cb, 309 (obj, "drag", "efl.dragable.hbar",
309 obj); 310 obj, _efl_ui_scroller_hbar_drag_cb, NULL);
310 efl_layout_signal_callback_add 311 efl_layout_signal_callback_add
311 (obj, "drag,set", "efl.dragable.hbar", 312 (obj, "drag,set", "efl.dragable.hbar",
312 _efl_ui_scroller_edje_drag_cb, obj); 313 obj, _efl_ui_scroller_edje_drag_cb, NULL);
313 efl_layout_signal_callback_add 314 efl_layout_signal_callback_add
314 (obj, "drag,start", "efl.dragable.hbar", 315 (obj, "drag,start", "efl.dragable.hbar",
315 _efl_ui_scroller_edje_drag_start_cb, obj); 316 obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
316 efl_layout_signal_callback_add 317 efl_layout_signal_callback_add
317 (obj, "drag,stop", "efl.dragable.hbar", 318 (obj, "drag,stop", "efl.dragable.hbar",
318 _efl_ui_scroller_edje_drag_stop_cb, obj); 319 obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
319 efl_layout_signal_callback_add 320 efl_layout_signal_callback_add
320 (obj, "drag,step", "efl.dragable.hbar", 321 (obj, "drag,step", "efl.dragable.hbar",
321 _efl_ui_scroller_edje_drag_cb, obj); 322 obj, _efl_ui_scroller_edje_drag_cb, NULL);
322 efl_layout_signal_callback_add 323 efl_layout_signal_callback_add
323 (obj, "drag,page", "efl.dragable.hbar", 324 (obj, "drag,page", "efl.dragable.hbar",
324 _efl_ui_scroller_edje_drag_cb, obj); 325 obj, _efl_ui_scroller_edje_drag_cb, NULL);
325 efl_layout_signal_callback_add 326 efl_layout_signal_callback_add
326 (obj, "efl,hbar,press", "efl", 327 (obj, "efl,hbar,press", "efl",
327 _efl_ui_scroller_hbar_press_cb, obj); 328 obj, _efl_ui_scroller_hbar_press_cb, NULL);
328 efl_layout_signal_callback_add 329 efl_layout_signal_callback_add
329 (obj, "efl,hbar,unpress", "efl", 330 (obj, "efl,hbar,unpress", "efl",
330 _efl_ui_scroller_hbar_unpress_cb, obj); 331 obj, _efl_ui_scroller_hbar_unpress_cb, NULL);
331} 332}
332 333
333static void 334static void
@@ -336,55 +337,56 @@ _scroll_edje_object_detach(Evas_Object *obj)
336 EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, sd); 337 EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, sd);
337 338
338 efl_layout_signal_callback_del 339 efl_layout_signal_callback_del
339 (obj, "reload", "efl", _efl_ui_scroller_reload_cb, obj); 340 (obj, "reload", "efl",
341 obj, _efl_ui_scroller_reload_cb, NULL);
340 efl_layout_signal_callback_del 342 efl_layout_signal_callback_del
341 (obj, "drag", "efl.dragable.vbar", _efl_ui_scroller_vbar_drag_cb, 343 (obj, "drag", "efl.dragable.vbar",
342 obj); 344 obj, _efl_ui_scroller_vbar_drag_cb, NULL);
343 efl_layout_signal_callback_del 345 efl_layout_signal_callback_del
344 (obj, "drag,set", "efl.dragable.vbar", 346 (obj, "drag,set", "efl.dragable.vbar",
345 _efl_ui_scroller_edje_drag_cb, obj); 347 obj, _efl_ui_scroller_edje_drag_cb, NULL);
346 efl_layout_signal_callback_del 348 efl_layout_signal_callback_del
347 (obj, "drag,start", "efl.dragable.vbar", 349 (obj, "drag,start", "efl.dragable.vbar",
348 _efl_ui_scroller_edje_drag_start_cb, obj); 350 obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
349 efl_layout_signal_callback_del 351 efl_layout_signal_callback_del
350 (obj, "drag,stop", "efl.dragable.vbar", 352 (obj, "drag,stop", "efl.dragable.vbar",
351 _efl_ui_scroller_edje_drag_stop_cb, obj); 353 obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
352 efl_layout_signal_callback_del 354 efl_layout_signal_callback_del
353 (obj, "drag,step", "efl.dragable.vbar", 355 (obj, "drag,step", "efl.dragable.vbar",
354 _efl_ui_scroller_edje_drag_cb, obj); 356 obj, _efl_ui_scroller_edje_drag_cb, NULL);
355 efl_layout_signal_callback_del 357 efl_layout_signal_callback_del
356 (obj, "drag,page", "efl.dragable.vbar", 358 (obj, "drag,page", "efl.dragable.vbar",
357 _efl_ui_scroller_edje_drag_cb, obj); 359 obj, _efl_ui_scroller_edje_drag_cb, NULL);
358 efl_layout_signal_callback_del 360 efl_layout_signal_callback_del
359 (obj, "efl,vbar,press", "efl", 361 (obj, "efl,vbar,press", "efl",
360 _efl_ui_scroller_vbar_press_cb, obj); 362 obj, _efl_ui_scroller_vbar_press_cb, NULL);
361 efl_layout_signal_callback_del 363 efl_layout_signal_callback_del
362 (obj, "efl,vbar,unpress", "efl", 364 (obj, "efl,vbar,unpress", "efl",
363 _efl_ui_scroller_vbar_unpress_cb, obj); 365 obj, _efl_ui_scroller_vbar_unpress_cb, NULL);
364 efl_layout_signal_callback_del 366 efl_layout_signal_callback_del
365 (obj, "drag", "efl.dragable.hbar", _efl_ui_scroller_hbar_drag_cb, 367 (obj, "drag", "efl.dragable.hbar",
366 obj); 368 obj, _efl_ui_scroller_hbar_drag_cb, NULL);
367 efl_layout_signal_callback_del 369 efl_layout_signal_callback_del
368 (obj, "drag,set", "efl.dragable.hbar", 370 (obj, "drag,set", "efl.dragable.hbar",
369 _efl_ui_scroller_edje_drag_cb, obj); 371 obj, _efl_ui_scroller_edje_drag_cb, NULL);
370 efl_layout_signal_callback_del 372 efl_layout_signal_callback_del
371 (obj, "drag,start", "efl.dragable.hbar", 373 (obj, "drag,start", "efl.dragable.hbar",
372 _efl_ui_scroller_edje_drag_start_cb, obj); 374 obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
373 efl_layout_signal_callback_del 375 efl_layout_signal_callback_del
374 (obj, "drag,stop", "efl.dragable.hbar", 376 (obj, "drag,stop", "efl.dragable.hbar",
375 _efl_ui_scroller_edje_drag_stop_cb, obj); 377 obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
376 efl_layout_signal_callback_del 378 efl_layout_signal_callback_del
377 (obj, "drag,step", "efl.dragable.hbar", 379 (obj, "drag,step", "efl.dragable.hbar",
378 _efl_ui_scroller_edje_drag_cb, obj); 380 obj, _efl_ui_scroller_edje_drag_cb, NULL);
379 efl_layout_signal_callback_del 381 efl_layout_signal_callback_del
380 (obj, "drag,page", "efl.dragable.hbar", 382 (obj, "drag,page", "efl.dragable.hbar",
381 _efl_ui_scroller_edje_drag_cb, obj); 383 obj, _efl_ui_scroller_edje_drag_cb, NULL);
382 efl_layout_signal_callback_del 384 efl_layout_signal_callback_del
383 (obj, "efl,hbar,press", "efl", 385 (obj, "efl,hbar,press", "efl",
384 _efl_ui_scroller_hbar_press_cb, obj); 386 obj, _efl_ui_scroller_hbar_press_cb, NULL);
385 efl_layout_signal_callback_del 387 efl_layout_signal_callback_del
386 (obj, "efl,hbar,unpress", "efl", 388 (obj, "efl,hbar,unpress", "efl",
387 _efl_ui_scroller_hbar_unpress_cb, obj); 389 obj, _efl_ui_scroller_hbar_unpress_cb, NULL);
388} 390}
389 391
390static void 392static void
diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c
index 78ec64c332..ec51e9b336 100644
--- a/src/lib/elementary/efl_ui_slider.c
+++ b/src/lib/elementary/efl_ui_slider.c
@@ -652,11 +652,11 @@ _efl_ui_slider_efl_object_constructor(Eo *obj, Efl_Ui_Slider_Data *priv)
652 priv->val_max = 1.0; 652 priv->val_max = 1.0;
653 priv->step = SLIDER_STEP; 653 priv->step = SLIDER_STEP;
654 654
655 efl_layout_signal_callback_add(obj, "drag", "*", _drag, obj); 655 efl_layout_signal_callback_add(obj, "drag", "*", obj, _drag, NULL);
656 efl_layout_signal_callback_add(obj, "drag,start", "*", _drag_start, obj); 656 efl_layout_signal_callback_add(obj, "drag,start", "*", obj, _drag_start, NULL);
657 efl_layout_signal_callback_add(obj, "drag,stop", "*", _drag_stop, obj); 657 efl_layout_signal_callback_add(obj, "drag,stop", "*", obj, _drag_stop, NULL);
658 efl_layout_signal_callback_add(obj, "drag,step", "*", _drag_step, obj); 658 efl_layout_signal_callback_add(obj, "drag,step", "*", obj, _drag_step, NULL);
659 efl_layout_signal_callback_add(obj, "drag,page", "*", _drag_stop, obj); 659 efl_layout_signal_callback_add(obj, "drag,page", "*", obj, _drag_stop, NULL);
660 660
661 priv->spacer = efl_add(EFL_CANVAS_RECTANGLE_CLASS, obj, 661 priv->spacer = efl_add(EFL_CANVAS_RECTANGLE_CLASS, obj,
662 efl_gfx_color_set(efl_added, 0, 0, 0, 0), 662 efl_gfx_color_set(efl_added, 0, 0, 0, 0),
diff --git a/src/lib/elementary/efl_ui_tab_bar.c b/src/lib/elementary/efl_ui_tab_bar.c
index be9f8a12e1..f7b37f3799 100644
--- a/src/lib/elementary/efl_ui_tab_bar.c
+++ b/src/lib/elementary/efl_ui_tab_bar.c
@@ -87,7 +87,7 @@ _tab_icon_set_cb(void *data,
87 Tab_Info *ti = data; 87 Tab_Info *ti = data;
88 _tab_icon_update(ti); 88 _tab_icon_update(ti);
89 89
90 efl_layout_signal_callback_del(obj, emission, source, _tab_icon_set_cb, ti); 90 efl_layout_signal_callback_del(obj, emission, source, ti, _tab_icon_set_cb, NULL);
91 efl_layout_signal_emit(ti->tab, "efl,state,icon,reset", "efl"); 91 efl_layout_signal_emit(ti->tab, "efl,state,icon,reset", "efl");
92} 92}
93 93
@@ -129,7 +129,7 @@ _tab_icon_obj_set(Eo *obj,
129 (efl_part(ti->tab, "efl.icon_new"), ti->icon); 129 (efl_part(ti->tab, "efl.icon_new"), ti->icon);
130 efl_layout_signal_emit(ti->tab, "efl,state,icon_new,set", "efl"); 130 efl_layout_signal_emit(ti->tab, "efl,state,icon_new,set", "efl");
131 efl_layout_signal_callback_add 131 efl_layout_signal_callback_add
132 (ti->tab, "efl,state,icon_set,done", "efl", _tab_icon_set_cb, ti); 132 (ti->tab, "efl,state,icon_set,done", "efl", ti, _tab_icon_set_cb, NULL);
133 } 133 }
134 else 134 else
135 _tab_icon_update(ti); 135 _tab_icon_update(ti);
@@ -248,7 +248,7 @@ _tab_add(Eo *obj, const char *label, const char *icon)
248 CRI("Failed to set layout!"); 248 CRI("Failed to set layout!");
249 249
250 efl_layout_signal_callback_add 250 efl_layout_signal_callback_add
251 (tab, "efl,action,click", "efl", _action_click_cb, ti); 251 (tab, "efl,action,click", "efl", ti,_action_click_cb, NULL);
252 252
253 if (ti->icon) 253 if (ti->icon)
254 efl_content_set(efl_part(tab, "efl.icon"), ti->icon); 254 efl_content_set(efl_part(tab, "efl.icon"), ti->icon);
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index c13435175f..c11d8c1f6e 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -1661,26 +1661,26 @@ _efl_ui_text_efl_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data
1661 } 1661 }
1662} 1662}
1663 1663
1664EOLIAN static Eina_Bool 1664static Eina_Bool
1665_efl_ui_text_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 1665_efl_ui_text_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *pd, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
1666{ 1666{
1667 Eina_Bool ok; 1667 Eina_Bool ok;
1668 1668
1669 ok = efl_layout_signal_callback_add(sd->entry_edje, emission, source, func_cb, data); 1669 ok = efl_layout_signal_callback_add(pd->entry_edje, emission, source, func_data, func, func_free_cb);
1670 if (sd->scr_edje) 1670 if (pd->scr_edje)
1671 ok = efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data); 1671 ok = efl_layout_signal_callback_add(pd->scr_edje, emission, source, func_data, func, func_free_cb);
1672 1672
1673 return ok; 1673 return ok;
1674} 1674}
1675 1675
1676EOLIAN static Eina_Bool 1676static Eina_Bool
1677_efl_ui_text_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 1677_efl_ui_text_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *pd, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
1678{ 1678{
1679 Eina_Bool ok; 1679 Eina_Bool ok;
1680 1680
1681 ok = efl_layout_signal_callback_del(sd->entry_edje, emission, source, func_cb, data); 1681 ok = efl_layout_signal_callback_del(pd->entry_edje, emission, source, func_data, func, func_free_cb);
1682 if (sd->scr_edje) 1682 if (pd->scr_edje)
1683 ok = efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data); 1683 ok = efl_layout_signal_callback_del(pd->scr_edje, emission, source, func_data, func, func_free_cb);
1684 1684
1685 return ok; 1685 return ok;
1686} 1686}
diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c
index 8661778d09..c811e16cb4 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -3140,26 +3140,30 @@ _elm_entry_efl_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd
3140 } 3140 }
3141} 3141}
3142 3142
3143EOLIAN static Eina_Bool 3143static Eina_Bool
3144_elm_entry_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 3144_elm_entry_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd,
3145 const char *emission, const char *source,
3146 void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
3145{ 3147{
3146 Eina_Bool ok; 3148 Eina_Bool ok;
3147 3149
3148 ok = efl_layout_signal_callback_add(sd->entry_edje, emission, source, func_cb, data); 3150 ok = efl_layout_signal_callback_add(sd->entry_edje, emission, source, func_data, func, func_free_cb);
3149 if (sd->scr_edje) 3151 if (sd->scr_edje)
3150 ok = efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data); 3152 ok = efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_data, func, func_free_cb);
3151 3153
3152 return ok; 3154 return ok;
3153} 3155}
3154 3156
3155EOLIAN static Eina_Bool 3157static Eina_Bool
3156_elm_entry_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data) 3158_elm_entry_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd,
3159 const char *emission, const char *source,
3160 void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
3157{ 3161{
3158 Eina_Bool ok; 3162 Eina_Bool ok;
3159 3163
3160 ok = efl_layout_signal_callback_del(sd->entry_edje, emission, source, func_cb, data); 3164 ok = efl_layout_signal_callback_del(sd->entry_edje, emission, source, func_data, func, func_free_cb);
3161 if (sd->scr_edje) 3165 if (sd->scr_edje)
3162 ok = efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data); 3166 ok = efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_data, func, func_free_cb);
3163 3167
3164 return ok; 3168 return ok;
3165} 3169}
@@ -3177,7 +3181,7 @@ _elm_entry_signal_callback_add_legacy(Eo *obj, const char *emission, const char
3177 emission, source, func_cb, data); 3181 emission, source, func_cb, data);
3178 3182
3179 if (sd->scr_edje) 3183 if (sd->scr_edje)
3180 efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data); 3184 efl_layout_signal_callback_add(sd->scr_edje, emission, source, data, func_cb, NULL);
3181} 3185}
3182 3186
3183void * 3187void *
@@ -3193,7 +3197,7 @@ _elm_entry_signal_callback_del_legacy(Eo *obj, const char *emission, const char
3193 emission, source, func_cb); 3197 emission, source, func_cb);
3194 3198
3195 if (sd->scr_edje) 3199 if (sd->scr_edje)
3196 efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data); 3200 efl_layout_signal_callback_del(sd->scr_edje, emission, source, data, func_cb, NULL);
3197 3201
3198 return data; 3202 return data;
3199} 3203}
diff --git a/src/tests/emotion/emotion_test_main-eo.c b/src/tests/emotion/emotion_test_main-eo.c
index 2d5df2f9ab..b3f850c812 100644
--- a/src/tests/emotion/emotion_test_main-eo.c
+++ b/src/tests/emotion/emotion_test_main-eo.c
@@ -634,17 +634,17 @@ init_video_object(const char *module_filename, const char *filename)
634 634
635 efl_event_callback_array_add(o, emotion_object_test_callbacks(), oe); 635 efl_event_callback_array_add(o, emotion_object_test_callbacks(), oe);
636 636
637 efl_layout_signal_callback_add(oe, "video_control", "play", video_obj_signal_play_cb, o); 637 efl_layout_signal_callback_add(oe, "video_control", "play", o, video_obj_signal_play_cb, NULL);
638 efl_layout_signal_callback_add(oe, "video_control", "pause", video_obj_signal_pause_cb, o); 638 efl_layout_signal_callback_add(oe, "video_control", "pause", o, video_obj_signal_pause_cb, NULL);
639 efl_layout_signal_callback_add(oe, "video_control", "stop", video_obj_signal_stop_cb, o); 639 efl_layout_signal_callback_add(oe, "video_control", "stop", o, video_obj_signal_stop_cb, NULL);
640 efl_layout_signal_callback_add(oe, "drag", "video_progress", video_obj_signal_jump_cb, o); 640 efl_layout_signal_callback_add(oe, "drag", "video_progress", o, video_obj_signal_jump_cb, NULL);
641 efl_layout_signal_callback_add(oe, "drag", "video_alpha", video_obj_signal_alpha_cb, o); 641 efl_layout_signal_callback_add(oe, "drag", "video_alpha", o, video_obj_signal_alpha_cb, NULL);
642 efl_layout_signal_callback_add(oe, "drag", "video_volume", video_obj_signal_vol_cb, o); 642 efl_layout_signal_callback_add(oe, "drag", "video_volume", o, video_obj_signal_vol_cb, NULL);
643 efl_layout_signal_callback_add(oe, "frame_move", "start", video_obj_signal_frame_move_start_cb, oe); 643 efl_layout_signal_callback_add(oe, "frame_move", "start", oe, video_obj_signal_frame_move_start_cb, NULL);
644 efl_layout_signal_callback_add(oe, "frame_move", "stop", video_obj_signal_frame_move_stop_cb, oe); 644 efl_layout_signal_callback_add(oe, "frame_move", "stop", oe, video_obj_signal_frame_move_stop_cb, NULL);
645 efl_layout_signal_callback_add(oe, "frame_resize", "start", video_obj_signal_frame_resize_start_cb, oe); 645 efl_layout_signal_callback_add(oe, "frame_resize", "start", oe, video_obj_signal_frame_resize_start_cb, NULL);
646 efl_layout_signal_callback_add(oe, "frame_resize", "stop", video_obj_signal_frame_resize_stop_cb, oe); 646 efl_layout_signal_callback_add(oe, "frame_resize", "stop", oe, video_obj_signal_frame_resize_stop_cb, NULL);
647 efl_layout_signal_callback_add(oe, "mouse, move", "*", video_obj_signal_frame_move_cb, oe); 647 efl_layout_signal_callback_add(oe, "mouse, move", "*", oe, video_obj_signal_frame_move_cb, NULL);
648 efl_ui_drag_value_set(efl_part(oe, "video_alpha"), 0.0, 1.0); 648 efl_ui_drag_value_set(efl_part(oe, "video_alpha"), 0.0, 1.0);
649 efl_text_set(efl_part(oe, "video_alpha_txt"), "alpha 255"); 649 efl_text_set(efl_part(oe, "video_alpha_txt"), "alpha 255");
650 efl_ui_drag_value_set(efl_part(oe, "video_volume"), 0.0, 0.5); 650 efl_ui_drag_value_set(efl_part(oe, "video_volume"), 0.0, 0.5);