diff --git a/ChangeLog b/ChangeLog index 1e883c88ac..85dcb1808e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-09-02 Shinwoo Kim + + * Ecore_Input_Evas: Check the state of last mouse event more properly. + 2013-08-29 Boris Faure * Edje: export EFL_VERSION_MAJOR/MINOR when compiling edc files diff --git a/NEWS b/NEWS index 088067c802..df5af760a6 100644 --- a/NEWS +++ b/NEWS @@ -372,6 +372,7 @@ Fixes: - Fix return type of function ecore_wl_outputs_get(). * Ecore_Input_Evas: - Fix ecore_input_evas didn't check the device id of mouse event. + - Check the state of last mouse event more properly. * Ecore-imf: - Fix crash when ecore_imf_context_del is called in ecore_imf_context_input_panel_callback_call. * Eio: diff --git a/src/lib/ecore_input_evas/ecore_input_evas.c b/src/lib/ecore_input_evas/ecore_input_evas.c index 8669226983..ef08c48c59 100644 --- a/src/lib/ecore_input_evas/ecore_input_evas.c +++ b/src/lib/ecore_input_evas/ecore_input_evas.c @@ -341,6 +341,7 @@ _ecore_event_evas_key(Ecore_Event_Key *e, Ecore_Event_Press press) static Eina_Bool _ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button *e, Ecore_Event_Press press, Eina_Bool faked) { + Ecore_Event_Last *eel; Ecore_Input_Window *lookup; Evas_Button_Flags flags = EVAS_BUTTON_NONE; @@ -352,11 +353,15 @@ _ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button *e, Ecore_Event_Press pr if (_last_events_enable) { //error handle: if ecore up without ecore down - if ((press == ECORE_UP) && (!_ecore_event_evas_lookup(e->multi.device, e->buttons, EINA_FALSE))) - { - INF("ButtonEvent: up event without down event."); - return ECORE_CALLBACK_PASS_ON; - } + if (press == ECORE_UP) + { + eel = _ecore_event_evas_lookup(e->multi.device, e->buttons, EINA_FALSE); + if ((!eel) || (eel->state == ECORE_INPUT_UP)) + { + INF("ButtonEvent: up event without down event."); + return ECORE_CALLBACK_PASS_ON; + } + } } if (!faked) _ecore_event_evas_push_mouse_button(e, press);