From 0ebfff259fa4ec6aaf5e97a213d5c65c24052e96 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 3 Aug 2019 10:49:07 +0100 Subject: change browser_window_mouse_track to use unscaled coordinates --- frontends/windows/drawable.c | 50 ++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 20 deletions(-) (limited to 'frontends/windows') diff --git a/frontends/windows/drawable.c b/frontends/windows/drawable.c index 3cded7e0c..9383f7069 100644 --- a/frontends/windows/drawable.c +++ b/frontends/windows/drawable.c @@ -378,10 +378,15 @@ nsws_drawable_paint(struct gui_window *gw, HWND hwnd) clip.x1 = ps.rcPaint.right; clip.y1 = ps.rcPaint.bottom; + /** + * \todo work out why the heck scroll needs scaling + */ + browser_window_redraw(gw->bw, -gw->scrollx / gw->scale, -gw->scrolly / gw->scale, - &clip, &ctx); + &clip, + &ctx); } EndPaint(hwnd, &ps); @@ -425,19 +430,21 @@ nsws_drawable_mouseup(struct gui_window *gw, if ((gw->mouse->state & click) != 0) { NSLOG(netsurf, INFO, - "mouse click bw %p, state 0x%x, x %f, y %f", gw->bw, - gw->mouse->state, (x + gw->scrollx) / gw->scale, - (y + gw->scrolly) / gw->scale); + "mouse click bw %p, state 0x%x, x %d, y %d", + gw->bw, + gw->mouse->state, + x + gw->scrollx, + y + gw->scrolly); browser_window_mouse_click(gw->bw, gw->mouse->state, - (x + gw->scrollx), - (y + gw->scrolly)); + x + gw->scrollx, + y + gw->scrolly); } else { browser_window_mouse_track(gw->bw, 0, - (x + gw->scrollx) / gw->scale, - (y + gw->scrolly) / gw->scale); + x + gw->scrollx, + y + gw->scrolly); } gw->mouse->state = 0; @@ -468,16 +475,19 @@ nsws_drawable_mousedown(struct gui_window *gw, if ((GetKeyState(VK_MENU) & 0x8000) == 0x8000) gw->mouse->state |= BROWSER_MOUSE_MOD_3; - gw->mouse->pressed_x = (x + gw->scrollx) / gw->scale; - gw->mouse->pressed_y = (y + gw->scrolly) / gw->scale; + gw->mouse->pressed_x = x + gw->scrollx; + gw->mouse->pressed_y = y + gw->scrolly; - NSLOG(netsurf, INFO, "mouse click bw %p, state %x, x %f, y %f", - gw->bw, gw->mouse->state, (x + gw->scrollx) / gw->scale, - (y + gw->scrolly) / gw->scale); + NSLOG(netsurf, INFO, "mouse click bw %p, state %x, x %d, y %d", + gw->bw, + gw->mouse->state, + x + gw->scrollx, + y + gw->scrolly); - browser_window_mouse_click(gw->bw, gw->mouse->state, - (x + gw->scrollx), - (y + gw->scrolly)); + browser_window_mouse_click(gw->bw, + gw->mouse->state, + x + gw->scrollx, + y + gw->scrolly); return 0; } @@ -496,9 +506,9 @@ nsws_drawable_mousemove(struct gui_window *gw, int x, int y) if ((gw == NULL) || (gw->mouse == NULL) || (gw->bw == NULL)) return 0; - /* scale co-ordinates */ - x = (x + gw->scrollx) ; - y = (y + gw->scrolly); + /* add scroll offsets */ + x = x + gw->scrollx; + y = y + gw->scrolly; /* if mouse button held down and pointer moved more than * minimum distance drag is happening */ @@ -535,7 +545,7 @@ nsws_drawable_mousemove(struct gui_window *gw, int x, int y) gw->mouse->state &= ~BROWSER_MOUSE_MOD_3; - browser_window_mouse_track(gw->bw, gw->mouse->state, x/ gw->scale, y/ gw->scale); + browser_window_mouse_track(gw->bw, gw->mouse->state, x, y); return 0; } -- cgit v1.2.3