summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2013-02-12 19:12:14 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2013-02-12 19:12:14 +0000
commit1809143ff33ed96d17e4e331b115b387801e10f5 (patch)
treea8380048e7a114cecdbd8bb620ae7ac9671dc1cc /amiga
parent2c64e896411a131b708ee49da2972da8d7045cc2 (diff)
downloadnetsurf-1809143ff33ed96d17e4e331b115b387801e10f5.tar.gz
netsurf-1809143ff33ed96d17e4e331b115b387801e10f5.tar.bz2
Implement triple-click
Diffstat (limited to 'amiga')
-rwxr-xr-xamiga/gui.c24
-rwxr-xr-xamiga/gui.h1
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 */