summaryrefslogtreecommitdiff
path: root/amiga/gui.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2010-12-16 23:28:33 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2010-12-16 23:28:33 +0000
commit96cb4b40e728830d36ae90d11fc4c405c82fdc21 (patch)
treead658c2e93a473986c3742a0ab8e0c380fc15acf /amiga/gui.c
parentddd677e72a8cdc6c56a467ed75b0e196b8eafbaa (diff)
downloadnetsurf-96cb4b40e728830d36ae90d11fc4c405c82fdc21.tar.gz
netsurf-96cb4b40e728830d36ae90d11fc4c405c82fdc21.tar.bz2
Allow double-clicks in main browser and middle button double-clicks in treeview
svn path=/trunk/netsurf/; revision=11083
Diffstat (limited to 'amiga/gui.c')
-rwxr-xr-xamiga/gui.c58
1 files changed, 54 insertions, 4 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index 1427403c4..f3ef8e68d 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -863,6 +863,7 @@ void ami_handle_msg(void)
struct Node *tabnode;
int i, nskey;
struct browser_window *closedbw;
+ struct timeval curtime;
if(IsMinListEmpty(window_list))
{
@@ -1138,22 +1139,71 @@ void ami_handle_msg(void)
case SELECTUP:
if(gwin->mouse_state & BROWSER_MOUSE_PRESS_1)
{
- browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_CLICK_1 | gwin->key_state,x,y);
+ CurrentTime(&curtime.tv_sec, &curtime.tv_usec);
+
+ gwin->mouse_state = BROWSER_MOUSE_CLICK_1;
+
+ if(gwin->lastclick.tv_sec)
+ {
+ if(DoubleClick(gwin->lastclick.tv_sec,
+ gwin->lastclick.tv_usec,
+ curtime.tv_sec, curtime.tv_usec))
+ 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)
+ {
+ gwin->lastclick.tv_sec = 0;
+ gwin->lastclick.tv_usec = 0;
+ }
+ else
+ {
+ gwin->lastclick.tv_sec = curtime.tv_sec;
+ gwin->lastclick.tv_usec = curtime.tv_usec;
+ }
}
else
{
- browser_window_mouse_drag_end(gwin->bw,0,x,y);
+ browser_window_mouse_drag_end(gwin->bw, 0, x, y);
}
gwin->mouse_state=0;
break;
+
case MIDDLEUP:
if(gwin->mouse_state & BROWSER_MOUSE_PRESS_2)
{
- browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_CLICK_2 | gwin->key_state,x,y);
+ CurrentTime(&curtime.tv_sec, &curtime.tv_usec);
+
+ gwin->mouse_state = BROWSER_MOUSE_CLICK_2;
+
+ if(gwin->lastclick.tv_sec)
+ {
+ if(DoubleClick(gwin->lastclick.tv_sec,
+ gwin->lastclick.tv_usec,
+ curtime.tv_sec, curtime.tv_usec))
+ 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)
+ {
+ gwin->lastclick.tv_sec = 0;
+ gwin->lastclick.tv_usec = 0;
+ }
+ else
+ {
+ gwin->lastclick.tv_sec = curtime.tv_sec;
+ gwin->lastclick.tv_usec = curtime.tv_usec;
+ }
}
else
{
- browser_window_mouse_drag_end(gwin->bw,0,x,y);
+ browser_window_mouse_drag_end(gwin->bw, 0, x, y);
}
gwin->mouse_state=0;
break;