raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9ac9b26436eb83f85ce8fe20c2500ea483accafb
commit 9ac9b26436eb83f85ce8fe20c2500ea483accafb Author: woochan lee <wc0917....@samsung.com> Date: Wed Dec 23 18:58:43 2015 +0900 edje_callbacks: Add mouse,pressed,in/out signal. Summary: The mouse,in/out signal has missing parts to use. When user send down event on specific object, then move cursor to outside of object. the mouse,in signal must be called in case. but it's not in traditional implement. So i added this signal for support above use case. In order to satisfy above use case, user can add both of the signals(mouse,in mouse,pressed,in). (Adding new name of signals to do not break compatibility with before implements.) @feature Test Plan: Add mouse,pressed,in/out program to object. Press object which added signals before. Move mouse cursor to out of object, then check the program works. Reviewers: Hermet, cedric, raster Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D2992 --- src/lib/edje/edje_callbacks.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/edje/edje_callbacks.c b/src/lib/edje/edje_callbacks.c index 39a6255..ec60ba9 100644 --- a/src/lib/edje/edje_callbacks.c +++ b/src/lib/edje/edje_callbacks.c @@ -273,7 +273,12 @@ _edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc evas_object_geometry_get(obj, &x, &y, &w, &h); if ((ev->cur.canvas.x < x) || (ev->cur.canvas.y < y) || (ev->cur.canvas.x >= (x + w)) || (ev->cur.canvas.y >= (y + h))) - rp->still_in = EINA_FALSE; + { + if ((ev->buttons) && ((!ev->event_flags) || (!ignored))) + _edje_emit(ed, "mouse,pressed,out", rp->part->name); + + rp->still_in = EINA_FALSE; + } } } else @@ -285,7 +290,12 @@ _edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc evas_object_geometry_get(obj, &x, &y, &w, &h); if ((ev->cur.canvas.x >= x) && (ev->cur.canvas.y >= y) && (ev->cur.canvas.x < (x + w)) && (ev->cur.canvas.y < (y + h))) - rp->still_in = EINA_TRUE; + { + if ((ev->buttons) && ((!ev->event_flags) || (!ignored))) + _edje_emit(ed, "mouse,pressed,in", rp->part->name); + + rp->still_in = EINA_TRUE; + } } } _edje_util_freeze(ed); --