fix double/triple click

SVN revision: 53010
This commit is contained in:
Carsten Haitzler 2010-10-04 07:58:06 +00:00
parent f95baa679b
commit a77152c531
1 changed files with 41 additions and 19 deletions

View File

@ -43,6 +43,7 @@ static Window _ecore_x_mouse_down_last_last_event_win = 0;
static Time _ecore_x_mouse_down_last_time = 0; static Time _ecore_x_mouse_down_last_time = 0;
static Time _ecore_x_mouse_down_last_last_time = 0; static Time _ecore_x_mouse_down_last_last_time = 0;
static int _ecore_x_mouse_up_count = 0; static int _ecore_x_mouse_up_count = 0;
static int _ecore_x_mouse_down_did_double = 0;
static int _ecore_x_mouse_down_did_triple = 0; static int _ecore_x_mouse_down_did_triple = 0;
static int _ecore_x_last_event_mouse_move = 0; static int _ecore_x_last_event_mouse_move = 0;
static Ecore_Event *_ecore_x_last_event_mouse_move_event = NULL; static Ecore_Event *_ecore_x_last_event_mouse_move_event = NULL;
@ -493,28 +494,49 @@ _ecore_mouse_button(int event,
if (event_window == window) if (event_window == window)
{ {
if (((int)(timestamp - _ecore_x_mouse_down_last_time) <= if (event == ECORE_EVENT_MOUSE_BUTTON_DOWN)
(int)(1000 * _ecore_x_double_click_time)) && {
(window == _ecore_x_mouse_down_last_win) && if (((int)(timestamp - _ecore_x_mouse_down_last_time) <=
(event_window == _ecore_x_mouse_down_last_event_win) (int)(1000 * _ecore_x_double_click_time)) &&
) (window == _ecore_x_mouse_down_last_win) &&
e->double_click = 1; (event_window == _ecore_x_mouse_down_last_event_win)
)
if (((int)(timestamp - _ecore_x_mouse_down_last_last_time) <= {
(int)(2 * 1000 * _ecore_x_double_click_time)) && e->double_click = 1;
(window == _ecore_x_mouse_down_last_win) && _ecore_x_mouse_down_did_double = 1;
(window == _ecore_x_mouse_down_last_last_win) && }
(event_window == _ecore_x_mouse_down_last_event_win) && else
(event_window == _ecore_x_mouse_down_last_last_event_win) {
) _ecore_x_mouse_down_did_double = 0;
{ _ecore_x_mouse_down_did_triple = 0;
e->triple_click = 1; }
_ecore_x_mouse_down_did_triple = 1;
if (((int)(timestamp - _ecore_x_mouse_down_last_last_time) <=
(int)(2 * 1000 * _ecore_x_double_click_time)) &&
(window == _ecore_x_mouse_down_last_win) &&
(window == _ecore_x_mouse_down_last_last_win) &&
(event_window == _ecore_x_mouse_down_last_event_win) &&
(event_window == _ecore_x_mouse_down_last_last_event_win)
)
{
e->triple_click = 1;
_ecore_x_mouse_down_did_triple = 1;
}
else
{
_ecore_x_mouse_down_did_triple = 0;
}
} }
else else
_ecore_x_mouse_down_did_triple = 0; {
if (_ecore_x_mouse_down_did_double)
e->double_click = 1;
if (_ecore_x_mouse_down_did_triple)
e->triple_click = 1;
}
} }
if (event == ECORE_EVENT_MOUSE_BUTTON_DOWN if (event == ECORE_EVENT_MOUSE_BUTTON_DOWN
&& !e->double_click && !e->double_click
&& !e->triple_click) && !e->triple_click)