From 1809143ff33ed96d17e4e331b115b387801e10f5 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Tue, 12 Feb 2013 19:12:14 +0000 Subject: Implement triple-click --- amiga/gui.c | 24 ++++++++++++++++++------ amiga/gui.h | 1 + 2 files changed, 19 insertions(+), 6 deletions(-) (limited to 'amiga') diff --git a/amiga/gui.c b/amiga/gui.c index c10abed0e..589df2ae4 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -1511,14 +1511,19 @@ void ami_handle_msg(void) { if(DoubleClick(gwin->lastclick.tv_sec, gwin->lastclick.tv_usec, - curtime.tv_sec, curtime.tv_usec)) - gwin->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK; + curtime.tv_sec, curtime.tv_usec)) { + if(gwin->prev_mouse_state & BROWSER_MOUSE_DOUBLE_CLICK) { + gwin->mouse_state |= BROWSER_MOUSE_TRIPLE_CLICK; + } else { + gwin->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK; + } + } } browser_window_mouse_click(gwin->bw, gwin->mouse_state | gwin->key_state,x,y); - if(gwin->mouse_state & BROWSER_MOUSE_DOUBLE_CLICK) + if(gwin->mouse_state & BROWSER_MOUSE_TRIPLE_CLICK) { gwin->lastclick.tv_sec = 0; gwin->lastclick.tv_usec = 0; @@ -1533,6 +1538,7 @@ void ami_handle_msg(void) { browser_window_mouse_track(gwin->bw, 0, x, y); } + gwin->prev_mouse_state = gwin->mouse_state; gwin->mouse_state=0; break; @@ -1547,14 +1553,19 @@ void ami_handle_msg(void) { if(DoubleClick(gwin->lastclick.tv_sec, gwin->lastclick.tv_usec, - curtime.tv_sec, curtime.tv_usec)) - gwin->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK; + curtime.tv_sec, curtime.tv_usec)) { + if(gwin->prev_mouse_state & BROWSER_MOUSE_DOUBLE_CLICK) { + gwin->mouse_state |= BROWSER_MOUSE_TRIPLE_CLICK; + } else { + gwin->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK; + } + } } browser_window_mouse_click(gwin->bw, gwin->mouse_state | gwin->key_state,x,y); - if(gwin->mouse_state & BROWSER_MOUSE_DOUBLE_CLICK) + if(gwin->mouse_state & BROWSER_MOUSE_TRIPLE_CLICK) { gwin->lastclick.tv_sec = 0; gwin->lastclick.tv_usec = 0; @@ -1569,6 +1580,7 @@ void ami_handle_msg(void) { browser_window_mouse_track(gwin->bw, 0, x, y); } + gwin->prev_mouse_state = gwin->mouse_state; gwin->mouse_state=0; break; diff --git a/amiga/gui.h b/amiga/gui.h index 2fd0f0277..126bcbe90 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -109,6 +109,7 @@ struct gui_window_2 { char *status; char *wintitle; char *helphints[GID_LAST]; + browser_mouse_state prev_mouse_state; struct timeval lastclick; BOOL rmbtrapped; struct AppIcon *appicon; /* iconify appicon */ -- cgit v1.2.3