Windows: fix undrawn pixels at right and bottom of scaled windows.

This commit is contained in:
ManoloFLTK 2020-11-29 09:14:54 +01:00
parent 4291e9497b
commit f5f9043208
2 changed files with 1 additions and 4 deletions

View File

@ -1265,8 +1265,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
ValidateRgn(hWnd, R2);
}
// convert R2 in drawing units to i->region in FLTK units
i->region = Fl_GDI_Graphics_Driver::scale_region(R2, 1 / scale, NULL);
if (scale != 1) DeleteObject(R2);
window->clear_damage((uchar)(window->damage() | FL_DAMAGE_EXPOSE));
// These next two statements should not be here, so that all update

View File

@ -246,14 +246,12 @@ void Fl_GDI_Graphics_Driver::scale(float f) {
/* Rescale region r with factor f and returns the scaled region.
Region r is returned unchanged if r is null or f is 1.
The input region is deleted if dr is null.
*/
HRGN Fl_GDI_Graphics_Driver::scale_region(HRGN r, float f, Fl_GDI_Graphics_Driver *dr) {
if (r && f != 1) {
DWORD size = GetRegionData(r, 0, NULL);
RGNDATA *pdata = (RGNDATA*)malloc(size);
GetRegionData(r, size, pdata);
if (!dr) DeleteObject(r);
POINT pt = {0, 0};
if (dr && dr->depth >= 1) { // account for translation
GetWindowOrgEx((HDC)dr->gc(), &pt);