diff --git a/src/conio/mouse.c b/src/conio/mouse.c index 3705d757cde523921566577e10a7524320db6d1d..73654c18a2d383059eca65b98c25ddde8c148a55 100644 --- a/src/conio/mouse.c +++ b/src/conio/mouse.c @@ -150,6 +150,24 @@ void add_outevent(int event, int x, int y) pthread_mutex_unlock(&out_mutex); } +int more_multies(int button, int clicks) +{ + int i; + + switch(clicks) { + case 1: + if(mouse_events & (1<<CIOLIB_BUTTON_DBL_CLICK(button))) + return(1); + case 2: + if(mouse_events & (1<<CIOLIB_BUTTON_TRPL_CLICK(button))) + return(1); + case 3: + if(mouse_events & (1<<CIOLIB_BUTTON_QUAD_CLICK(button))) + return(1); + } + return(0); +} + void ciolib_mouse_thread(void *data) { struct in_mouse_event *old_in_event; @@ -315,15 +333,15 @@ void ciolib_mouse_thread(void *data) break; case MOUSE_SINGLEPRESSED: state.button_state[but-1]=MOUSE_CLICKED; - state.timeout[but-1]=MSEC_CLOCK()+state.multi_timeout; + state.timeout[but-1]=more_multies(but,1)?MSEC_CLOCK()+state.multi_timeout:MSEC_CLOCK(); break; case MOUSE_DOUBLEPRESSED: state.button_state[but-1]=MOUSE_DOUBLECLICKED; - state.timeout[but-1]=MSEC_CLOCK()+state.multi_timeout; + state.timeout[but-1]=more_multies(but,2)?MSEC_CLOCK()+state.multi_timeout:MSEC_CLOCK(); break; case MOUSE_TRIPLEPRESSED: state.button_state[but-1]=MOUSE_TRIPLECLICKED; - state.timeout[but-1]=MSEC_CLOCK()+state.multi_timeout; + state.timeout[but-1]=more_multies(but,3)?MSEC_CLOCK()+state.multi_timeout:MSEC_CLOCK(); break; case MOUSE_QUADPRESSED: state.button_state[but-1]=MOUSE_NOSTATE;