From 2785f18af5437da3acf98f1bb6e9e3c113f391a5 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 28 Mar 2009 23:51:39 +0000 Subject: Mouse scrollwheel support svn path=/trunk/netsurf/; revision=6976 --- amiga/gui.c | 59 ++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 21 deletions(-) (limited to 'amiga/gui.c') diff --git a/amiga/gui.c b/amiga/gui.c index c6f86c861..eafe64a6c 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -1768,7 +1768,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, WINDOW_HorizProp,1, WINDOW_VertProp,1, WINDOW_IDCMPHook,&gwin->shared->scrollerhook, - WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE, + WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE | IDCMP_EXTENDEDMOUSE, WINDOW_AppPort, appport, WINDOW_AppWindow,TRUE, WINDOW_SharedPort,sport, @@ -1934,7 +1934,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, WINDOW_HorizProp,1, WINDOW_VertProp,1, WINDOW_IDCMPHook,&gwin->shared->scrollerhook, - WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE, + WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE | IDCMP_EXTENDEDMOUSE, WINDOW_AppPort, appport, WINDOW_AppWindow,TRUE, WINDOW_SharedPort,sport, @@ -2367,6 +2367,8 @@ void gui_window_set_scroll(struct gui_window *g, int sx, int sy) g->scrollx = sx; g->scrolly = sy; + + history_set_current_scroll(g->shared->bw->history,g->scrollx,g->scrolly); } } @@ -2374,7 +2376,7 @@ void gui_window_scroll_visible(struct gui_window *g, int x0, int y0, int x1, int y1) { gui_window_set_scroll(g, x0, y0); - ami_do_redraw(g->shared,false); +// ami_do_redraw(g->shared,false); above function does redraw I think } void gui_window_position_frame(struct gui_window *g, int x0, int y0, @@ -2800,25 +2802,40 @@ void ami_scroller_hook(struct Hook *hook,Object *object,struct IntuiMessage *msg { ULONG gid,x,y; struct gui_window_2 *gwin = hook->h_Data; + struct IntuiWheelData *wheel; + + gui_window_get_scroll(gwin->bw->window, + &gwin->bw->window->scrollx,&gwin->bw->window->scrolly); + + switch(msg->Class) + { + case IDCMP_IDCMPUPDATE: + gid = GetTagData( GA_ID, 0, msg->IAddress ); + + switch( gid ) + { + case OID_HSCROLL: + case OID_VSCROLL: + history_set_current_scroll(gwin->bw->history, + gwin->bw->window->scrollx,gwin->bw->window->scrolly); - if (msg->Class == IDCMP_IDCMPUPDATE) - { - gid = GetTagData( GA_ID, 0, msg->IAddress ); - - switch( gid ) - { - case OID_HSCROLL: - case OID_VSCROLL: - gui_window_get_scroll(gwin->bw->window, - &gwin->bw->window->scrollx,&gwin->bw->window->scrolly); - history_set_current_scroll(gwin->bw->history, - gwin->bw->window->scrollx,gwin->bw->window->scrolly); - - if(!option_faster_scroll) - gwin->redraw_required = true; - else ami_do_redraw(gwin,true); - break; - } + if(!option_faster_scroll) + gwin->redraw_required = true; + else ami_do_redraw(gwin,true); + break; + } + break; + + case IDCMP_EXTENDEDMOUSE: + if(msg->Code == IMSGCODE_INTUIWHEELDATA) + { + wheel = (struct IntuiWheelData *)msg->IAddress; + + gui_window_set_scroll(gwin->bw->window, + gwin->bw->window->scrollx + (wheel->WheelX * 10), + gwin->bw->window->scrolly + (wheel->WheelY * 10)); + } + break; } // ReplyMsg((struct Message *)msg); } -- cgit v1.2.3