jypark pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=be2a4342b40f7ec073c39e785c39e4c629762ef4

commit be2a4342b40f7ec073c39e785c39e4c629762ef4
Author: Ji-Youn Park <jy0703.p...@samsung.com>
Date:   Wed Jul 29 21:56:15 2015 +0900

    ecore_evas_input: add value to enable mouse button cancel feature
    
    mike reported this feature break the behavior in E19, but I have trouble to 
reproduce it.
    so I first add value to enable this feature and after that,
---
 src/lib/ecore_input_evas/ecore_input_evas.c | 49 ++++++++++++++++++-----------
 1 file changed, 30 insertions(+), 19 deletions(-)

diff --git a/src/lib/ecore_input_evas/ecore_input_evas.c 
b/src/lib/ecore_input_evas/ecore_input_evas.c
index d332b4c..bea13cb 100644
--- a/src/lib/ecore_input_evas/ecore_input_evas.c
+++ b/src/lib/ecore_input_evas/ecore_input_evas.c
@@ -60,6 +60,8 @@ static Eina_Hash *_window_hash = NULL;
 static Eina_List *_last_events = NULL;
 static double _last_events_timeout = 0.5;
 static Eina_Bool _last_events_enable = EINA_FALSE;
+static Eina_Bool _cancel_events_enable = EINA_FALSE;
+
 
 static Eina_Bool _ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button *e,
                                                 Ecore_Event_Press press,
@@ -458,33 +460,36 @@ _ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button 
*e, Ecore_Event_Press pr
    //error handle
    // 1. ecore up without ecore down
    // 2. ecore cancel without ecore down
-   if (press != ECORE_DOWN)
+   if (_cancel_events_enable)
      {
-        //ECORE_UP or ECORE_CANCEL
-        eel = _ecore_event_evas_lookup(e->multi.device, e->buttons, e->window, 
EINA_FALSE);
-        if (!eel)
+        if (press != ECORE_DOWN)
           {
-             WRN("ButtonEvent has no history.");
-             return ECORE_CALLBACK_PASS_ON;
+             //ECORE_UP or ECORE_CANCEL
+             eel = _ecore_event_evas_lookup(e->multi.device, e->buttons, 
e->window, EINA_FALSE);
+             if (!eel)
+               {
+                 WRN("ButtonEvent has no history.");
+                 return ECORE_CALLBACK_PASS_ON;
+               }
+
+             if ((e->window == eel->win) &&
+                 ((eel->state == ECORE_INPUT_UP) ||
+                 (eel->state == ECORE_INPUT_CANCEL)))
+               {
+                  WRN("ButtonEvent has wrong history. Last state=%d", 
eel->state);
+                  return ECORE_CALLBACK_PASS_ON;
+               }
           }
 
-        if ((e->window == eel->win) &&
-            ((eel->state == ECORE_INPUT_UP) ||
-            (eel->state == ECORE_INPUT_CANCEL)))
+        if (!faked)
           {
-             WRN("ButtonEvent has wrong history. Last state=%d", eel->state);
-             return ECORE_CALLBACK_PASS_ON;
+             Eina_Bool ret = EINA_FALSE;
+             ret = _ecore_event_evas_push_mouse_button(e, press);
+             /* This ButtonEvent is worng */
+             if (!ret) return ECORE_CALLBACK_PASS_ON;
           }
      }
 
-   if (!faked)
-     {
-        Eina_Bool ret = EINA_FALSE;
-        ret = _ecore_event_evas_push_mouse_button(e, press);
-        /* This ButtonEvent is worng */
-        if (!ret) return ECORE_CALLBACK_PASS_ON;
-     }
-
    if (e->multi.device == 0)
      {
         ecore_event_evas_modifier_lock_update(lookup->evas, e->modifiers);
@@ -588,6 +593,8 @@ ecore_event_evas_mouse_button_up(void *data EINA_UNUSED, 
int type EINA_UNUSED, v
 EAPI Eina_Bool
 ecore_event_evas_mouse_button_cancel(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event)
 {
+   if (!_cancel_events_enable) return EINA_FALSE;
+
    return _ecore_event_evas_mouse_button_cancel((Ecore_Event_Mouse_Button 
*)event);
 }
 
@@ -735,6 +742,10 @@ ecore_event_evas_init(void)
         if (tmp)
           _last_events_timeout = ((double) atoi(tmp)) / 60;
      }
+   if (getenv("ECORE_INPUT_CANCEL"))
+     {
+           _cancel_events_enable = EINA_TRUE;
+     }
 
    return _ecore_event_evas_init_count;
 

-- 


Reply via email to