[ecore_input_evas] check the state of last mouse event more properly.

This commit is contained in:
Shinwoo Kim 2013-09-02 11:51:08 +09:00
parent 64823141f6
commit 6113a3b767
3 changed files with 15 additions and 5 deletions

View File

@ -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 2013-08-29 Boris Faure
* Edje: export EFL_VERSION_MAJOR/MINOR when compiling edc files * Edje: export EFL_VERSION_MAJOR/MINOR when compiling edc files

1
NEWS
View File

@ -372,6 +372,7 @@ Fixes:
- Fix return type of function ecore_wl_outputs_get(). - Fix return type of function ecore_wl_outputs_get().
* Ecore_Input_Evas: * Ecore_Input_Evas:
- Fix ecore_input_evas didn't check the device id of mouse event. - Fix ecore_input_evas didn't check the device id of mouse event.
- Check the state of last mouse event more properly.
* Ecore-imf: * Ecore-imf:
- Fix crash when ecore_imf_context_del is called in ecore_imf_context_input_panel_callback_call. - Fix crash when ecore_imf_context_del is called in ecore_imf_context_input_panel_callback_call.
* Eio: * Eio:

View File

@ -341,6 +341,7 @@ _ecore_event_evas_key(Ecore_Event_Key *e, Ecore_Event_Press press)
static Eina_Bool static Eina_Bool
_ecore_event_evas_mouse_button(Ecore_Event_Mouse_Button *e, Ecore_Event_Press press, Eina_Bool faked) _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; Ecore_Input_Window *lookup;
Evas_Button_Flags flags = EVAS_BUTTON_NONE; 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) if (_last_events_enable)
{ {
//error handle: if ecore up without ecore down //error handle: if ecore up without ecore down
if ((press == ECORE_UP) && (!_ecore_event_evas_lookup(e->multi.device, e->buttons, EINA_FALSE))) if (press == ECORE_UP)
{ {
INF("ButtonEvent: up event without down event."); eel = _ecore_event_evas_lookup(e->multi.device, e->buttons, EINA_FALSE);
return ECORE_CALLBACK_PASS_ON; 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); if (!faked) _ecore_event_evas_push_mouse_button(e, press);