diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2013-02-12 19:12:14 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2013-02-12 19:12:14 +0000 |
commit | 1809143ff33ed96d17e4e331b115b387801e10f5 (patch) | |
tree | a8380048e7a114cecdbd8bb620ae7ac9671dc1cc /amiga | |
parent | 2c64e896411a131b708ee49da2972da8d7045cc2 (diff) | |
download | netsurf-1809143ff33ed96d17e4e331b115b387801e10f5.tar.gz netsurf-1809143ff33ed96d17e4e331b115b387801e10f5.tar.bz2 |
Implement triple-click
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/gui.c | 24 | ||||
-rwxr-xr-x | amiga/gui.h | 1 |
2 files changed, 19 insertions, 6 deletions
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 */ |