summaryrefslogtreecommitdiff
path: root/atari
diff options
context:
space:
mode:
authorOle Loots <ole@monochrom.net>2011-02-12 19:44:18 +0000
committerOle Loots <ole@monochrom.net>2011-02-12 19:44:18 +0000
commitc13001811606d0513734c975d6794e1eab191312 (patch)
tree25c1c4806fcff1c2e912ac64555103174aaa5d02 /atari
parent0fb16c18cbb1fa0072fde8ab6f05c2a2e99affc5 (diff)
downloadnetsurf-c13001811606d0513734c975d6794e1eab191312.tar.gz
netsurf-c13001811606d0513734c975d6794e1eab191312.tar.bz2
Improved mouse tracking
svn path=/trunk/netsurf/; revision=11656
Diffstat (limited to 'atari')
-rwxr-xr-xatari/global_evnt.c38
1 files changed, 27 insertions, 11 deletions
diff --git a/atari/global_evnt.c b/atari/global_evnt.c
index 6b0308cce..e00bab915 100755
--- a/atari/global_evnt.c
+++ b/atari/global_evnt.c
@@ -44,6 +44,7 @@
#include "atari/browser_win.h"
#include "atari/res/netsurf.rsh"
#include "atari/search.h"
+#include "atari/options.h"
extern const char * cfg_homepage_url;
extern struct gui_window *input_window;
@@ -221,6 +222,10 @@ static void __CDECL menu_lhistory(WINDOW *win, int item, int title, void *data)
static void __CDECL menu_ghistory(WINDOW *win, int item, int title, void *data)
{
LOG(("%s", __FUNCTION__));
+ char buf[PATH_MAX];
+ strcpy((char*)&buf, "file://");
+ strncat((char*)&buf, option_url_file, PATH_MAX - (strlen("file://")+1) );
+ browser_window_create((char*)&buf, 0, 0, true, false);
}
static void __CDECL menu_add_bookmark(WINDOW *win, int item, int title, void *data)
@@ -364,30 +369,40 @@ void global_track_mouse_state( void ){
long hold_time = 0;
COMPONENT * cmp;
LGRECT cmprect;
+ struct gui_window * gw = input_window;
- if( !input_window ) {
+ if( !gw ) {
bmstate = 0;
mouse_hold_start[0] = 0;
mouse_hold_start[1] = 0;
return;
}
+
graf_mkstate(&mx, &my, &mbut, &mkstat);
/* todo: creat function find_browser_window( mx, my ) */
- cmp = mt_CompFind( &app, input_window->root->cmproot, mx, my );
+ cmp = mt_CompFind( &app, gw->root->cmproot, mx, my );
if( cmp == NULL ) {
- printf("invalid call to mouse track!\n");
bmstate = 0;
mouse_hold_start[0] = 0;
mouse_hold_start[1] = 0;
return;
}
- browser_get_rect( input_window, BR_CONTENT, &cmprect );
- nx = mx - cmprect.g_x; /*+ input_window->browser->scroll.current.x;*/
- ny = my - cmprect.g_y; /*+ input_window->browser->scroll.current.x;*/
- nx = (nx + input_window->browser->scroll.current.x);
- ny = (ny + input_window->browser->scroll.current.y);
+ browser_get_rect( gw, BR_CONTENT, &cmprect );
+ nx = mx - cmprect.g_x;
+ ny = my - cmprect.g_y;
+ if( nx > cmprect.g_w ){
+
+ }
+
+ if( ny > cmprect.g_h ){
+ browser_scroll( gw, WA_DNPAGE, 10 + (ny - cmprect.g_h) , false );
+ return;
+ }
+
+ nx = (nx + gw->browser->scroll.current.x);
+ ny = (ny + gw->browser->scroll.current.y);
bmstate &= ~(BROWSER_MOUSE_MOD_1);
bmstate &= ~(BROWSER_MOUSE_MOD_2);
bmstate &= ~(BROWSER_MOUSE_MOD_3);
@@ -406,7 +421,7 @@ void global_track_mouse_state( void ){
bmstate &= ~( BROWSER_MOUSE_HOLDING_1 | BROWSER_MOUSE_DRAG_1 ) ;
LOG(("Drag for %d ended", i));
browser_window_mouse_drag_end(
- input_window->browser->bw,
+ gw->browser->bw,
0, nx, ny
);
}
@@ -414,14 +429,14 @@ void global_track_mouse_state( void ){
bmstate &= ~( BROWSER_MOUSE_HOLDING_2 | BROWSER_MOUSE_DRAG_2 ) ;
LOG(("Drag for %d ended", i));
browser_window_mouse_drag_end(
- input_window->browser->bw,
+ gw->browser->bw,
0, nx, ny
);
}
}
}
}
- browser_window_mouse_track(input_window->browser->bw, bmstate, nx, ny );
+ browser_window_mouse_track(gw->browser->bw, bmstate, nx, ny );
}
@@ -744,6 +759,7 @@ void unbind_global_events( void )
}
}
+/* send redraw to all browser windows */
void snd_redraw( short x, short y, short w, short h)
{
struct gui_window * gw;