change browser_window_redraw to use unscaled coordinates

This commit is contained in:
Vincent Sanders 2019-08-04 11:23:35 +01:00
parent b2f5c80ef8
commit f21c41a2e5
6 changed files with 17 additions and 21 deletions

View File

@ -1786,8 +1786,8 @@ bool html_redraw_box(const html_content *html, struct box *box,
} else if (box->iframe) {
/* Offset is passed to browser window redraw unscaled */
browser_window_redraw(box->iframe,
(x + padding_left) / scale,
(y + padding_top) / scale, &r, ctx);
x + padding_left,
y + padding_top, &r, ctx);
} else if (box->gadget && box->gadget->type == GADGET_CHECKBOX) {
if (!html_redraw_checkbox(x + padding_left, y + padding_top,

View File

@ -1929,6 +1929,9 @@ browser_window_redraw(struct browser_window *bw,
struct rect content_clip;
nserror res;
x /= bw->scale;
y /= bw->scale;
if (bw == NULL) {
NSLOG(netsurf, INFO, "NULL browser window");
return false;

View File

@ -357,7 +357,6 @@ fb_redraw(fbtk_widget_t *widget,
.plot = &fb_plotters
};
nsfb_t *nsfb = fbtk_get_nsfb(widget);
float scale = browser_window_get_scale(bw);
x = fbtk_get_absx(widget);
y = fbtk_get_absy(widget);
@ -377,8 +376,8 @@ fb_redraw(fbtk_widget_t *widget,
clip.y1 = bwidget->redraw_box.y1;
browser_window_redraw(bw,
(x - bwidget->scrollx) / scale,
(y - bwidget->scrolly) / scale,
x - bwidget->scrollx,
y - bwidget->scrolly,
&clip, &ctx);
if (fbtk_get_caret(widget, &caret_x, &caret_y, &caret_h)) {
@ -1861,10 +1860,9 @@ static bool
gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(g->browser);
float scale = browser_window_get_scale(g->bw);
*sx = bwidget->scrollx / scale;
*sy = bwidget->scrolly / scale;
*sx = bwidget->scrollx;
*sy = bwidget->scrolly;
return true;
}
@ -1884,12 +1882,11 @@ static nserror
gui_window_set_scroll(struct gui_window *gw, const struct rect *rect)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(gw->browser);
float scale = browser_window_get_scale(gw->bw);
assert(bwidget);
widget_scroll_x(gw, rect->x0 * scale, true);
widget_scroll_y(gw, rect->y0 * scale, true);
widget_scroll_x(gw, rect->x0, true);
widget_scroll_y(gw, rect->y0, true);
return NSERROR_OK;
}

View File

@ -383,8 +383,8 @@ nsws_drawable_paint(struct gui_window *gw, HWND hwnd)
*/
browser_window_redraw(gw->bw,
-gw->scrollx / gw->scale,
-gw->scrolly / gw->scale,
-gw->scrollx,
-gw->scrolly,
&clip,
&ctx);
}

View File

@ -882,8 +882,8 @@ win32_window_invalidate_area(struct gui_window *gw, const struct rect *rect)
if (rect != NULL) {
redrawrectp = &redrawrect;
redrawrect.left = (long)rect->x0 - (gw->scrollx / gw->scale);
redrawrect.top = (long)rect->y0 - (gw->scrolly / gw->scale);
redrawrect.left = (long)rect->x0 - gw->scrollx;
redrawrect.top = (long)rect->y0 - gw->scrolly;
redrawrect.right =(long)rect->x1;
redrawrect.bottom = (long)rect->y1;
@ -1417,7 +1417,6 @@ win32_window_create(struct browser_window *bw,
gw->width = 800;
gw->height = 600;
gw->scale = 1.0;
gw->toolbuttonsize = 24;
gw->requestscrollx = 0;
gw->requestscrolly = 0;
@ -1609,9 +1608,8 @@ win32_window_place_caret(struct gui_window *w, int x, int y,
return;
}
CreateCaret(w->drawingarea, (HBITMAP)NULL, 1, height * w->scale);
SetCaretPos(x * w->scale - w->scrollx,
y * w->scale - w->scrolly);
CreateCaret(w->drawingarea, (HBITMAP)NULL, 1, height );
SetCaretPos(x - w->scrollx, y - w->scrolly);
ShowCaret(w->drawingarea);
}

View File

@ -62,8 +62,6 @@ struct gui_window {
HACCEL acceltable; /**< accelerators */
float scale; /**< scale of content */
int scrollx; /**< current scroll location */
int scrolly; /**< current scroll location */