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);

-- 


Reply via email to