From 4171cbe0befc3d9cc1367e0d715fb1dee622d376 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Tue, 1 Dec 2020 16:57:55 +0100 Subject: Windows scaling: fix computation of border sizes. The corrected error was to use, e.g., int dx = W - w->w() * s; which does not produce the desired integer value. The correct writing is : int dx = W - int(w->w() * s); --- src/Fl_win32.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx index 4f9665819..0a9f7094a 100644 --- a/src/Fl_win32.cxx +++ b/src/Fl_win32.cxx @@ -1741,12 +1741,12 @@ static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx, W = r.right - r.left; H = r.bottom - r.top; bx = drawingX - r.left; - by = r.bottom - (drawingY + w->h() * s); // height of the bottom frame + by = r.bottom - int(drawingY + w->h() * s); // height of the bottom frame bt = drawingY - r.top - by; // height of top caption bar xoff = bx; yoff = by + bt; - dx = W - w->w() * s; - dy = H - w->h() * s; + dx = W - int(w->w() * s); + dy = H - int(w->h() * s); if (w_size_range_set && (w_maxw != w_minw || w_maxh != w_minh)) ret = 2; else @@ -1802,9 +1802,9 @@ static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx, Y = scr_y; // Make client area's lower right corner visible if (scr_x + scr_w < X + dx + w->w()) - X = scr_x + scr_w - w->w() * s - dx; + X = scr_x + scr_w - int(w->w() * s) - dx; if (scr_y + scr_h < Y + dy + w->h()) - Y = scr_y + scr_h - w->h() * s - dy; + Y = scr_y + scr_h - int(w->h() * s) - dy; // Make client area's upper left corner visible if (X + xoff < scr_x) X = scr_x - xoff; -- cgit v1.2.3