From cbbf90e642fdcb26c77b98b7d1773634ceaa6303 Mon Sep 17 00:00:00 2001 From: raster Date: Mon, 4 Oct 2010 09:02:43 +0000 Subject: [PATCH] aaagh ecore_fb needs double/triple fix too. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@53012 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore_fb/Ecore_Fb.h | 2 ++ src/lib/ecore_fb/ecore_fb_ps2.c | 25 +++++++++++++++++++++---- src/lib/ecore_fb/ecore_fb_ts.c | 21 +++++++++++++++++++-- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/lib/ecore_fb/Ecore_Fb.h b/src/lib/ecore_fb/Ecore_Fb.h index 03061eb..330f82d 100644 --- a/src/lib/ecore_fb/Ecore_Fb.h +++ b/src/lib/ecore_fb/Ecore_Fb.h @@ -96,6 +96,8 @@ struct _Ecore_Fb_Event_Mouse_Button_Up /** FB Mouse Up event */ int button; /**< Mouse button that was released (1 - 32) */ int x; /**< Mouse co-ordinates when mouse button was raised */ int y; /**< Mouse co-ordinates when mouse button was raised */ + int double_click : 1; /**< Set if click was a double click */ + int triple_click : 1; /**< Set if click was a triple click */ }; struct _Ecore_Fb_Event_Mouse_Move /** FB Mouse Move event */ diff --git a/src/lib/ecore_fb/ecore_fb_ps2.c b/src/lib/ecore_fb/ecore_fb_ps2.c index edd1972..e57da15 100644 --- a/src/lib/ecore_fb/ecore_fb_ps2.c +++ b/src/lib/ecore_fb/ecore_fb_ps2.c @@ -54,7 +54,8 @@ _ecore_fb_ps2_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __U int num; char *ptr; double t; - int did_triple = 0; + static int did_double = 0; + static int did_triple = 0; ptr = (char *)&(_ecore_fb_ps2_event); ptr += _ecore_fb_ps2_event_byte_count; @@ -105,14 +106,26 @@ _ecore_fb_ps2_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __U if (!e) goto retry; e->x = x; e->y = y; - e->button = 1; + e->button = i; if ((t - last_time) <= _ecore_fb_double_click_time) - e->double_click = 1; + { + e->double_click = 1; + did_double = 1; + } + else + { + did_double = 0; + did_triple = 0; + } if ((t - last_last_time) <= (2 * _ecore_fb_double_click_time)) { did_triple = 1; e->triple_click = 1; } + else + { + did_triple = 0; + } ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL); } else if ((!(button & mask)) && ((prev_button & mask))) @@ -124,7 +137,11 @@ _ecore_fb_ps2_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __U if (!e) goto retry; e->x = x; e->y = y; - e->button = 1; + e->button = i; + if (did_double) + e->double_click = 1; + if (did_triple) + e->triple_click = 1; ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL); } } diff --git a/src/lib/ecore_fb/ecore_fb_ts.c b/src/lib/ecore_fb/ecore_fb_ts.c index dd005df..caef71b 100644 --- a/src/lib/ecore_fb/ecore_fb_ts.c +++ b/src/lib/ecore_fb/ecore_fb_ts.c @@ -211,7 +211,8 @@ _ecore_fb_ts_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __UN int num; char *ptr; double t = 0.0; - int did_triple = 0; + static int did_double = 0; + static int did_triple = 0; #ifdef HAVE_TSLIB if (_ecore_fb_ts_apply_cal) @@ -269,12 +270,24 @@ _ecore_fb_ts_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __UN e->y = y; e->button = 1; if ((t - last_time) <= _ecore_fb_double_click_time) - e->double_click = 1; + { + e->double_click = 1; + did_double = 1; + } + else + { + did_double = 0; + did_triple = 0; + } if ((t - last_last_time) <= (2 * _ecore_fb_double_click_time)) { did_triple = 1; e->triple_click = 1; } + else + { + did_triple = 0; + } ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL); } else if ((!pressure) && (prev_pressure)) @@ -287,6 +300,10 @@ _ecore_fb_ts_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __UN e->x = prev_x; e->y = prev_y; e->button = 1; + if (did_double) + e->double_click = 1; + if (did_triple) + e->triple_click = 1; ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL); } if (did_triple) -- 2.7.4