[WIN32SS] Repaint the whole window frame on some style bits set (#3199)

This fixes the ReactOS Calculator buttons disappearing in CORE-16827
This commit is contained in:
Doug Lyons 2020-10-24 14:35:45 -05:00 committed by GitHub
parent 303f17f884
commit 8081ba9332
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2112,13 +2112,25 @@ co_WinPosSetWindowPos(
if ( !(pwnd->style & WS_CHILD) )
{
HRGN DcRgn = NtGdiCreateRectRgn(0, 0, 0, 0);
PREGION DcRgnObj = REGION_LockRgn(DcRgn);
TRACE("SWP_FRAMECHANGED win %p hRgn %p\n",pwnd, DcRgn);
IntGdiCombineRgn(DcRgnObj, VisBefore, NULL, RGN_COPY);
REGION_UnlockRgn(DcRgnObj);
ForceNCPaintErase(pwnd, DcRgn, DcRgnObj);
GreDeleteObject(DcRgn);
/*
* Check if we have these specific windows style bits set/reset.
* FIXME: There may be other combinations of styles that need this handling as well.
* This fixes the ReactOS Calculator buttons disappearing in CORE-16827.
*/
if ((Window->style & WS_CLIPSIBLINGS) && !(Window->style & (WS_POPUP | WS_CLIPCHILDREN | WS_SIZEBOX)))
{
IntSendNCPaint(pwnd, HRGN_WINDOW); // Paint the whole frame.
}
else // Use region handling
{
HRGN DcRgn = NtGdiCreateRectRgn(0, 0, 0, 0);
PREGION DcRgnObj = REGION_LockRgn(DcRgn);
TRACE("SWP_FRAMECHANGED win %p hRgn %p\n",pwnd, DcRgn);
IntGdiCombineRgn(DcRgnObj, VisBefore, NULL, RGN_COPY);
REGION_UnlockRgn(DcRgnObj);
ForceNCPaintErase(pwnd, DcRgn, DcRgnObj);
GreDeleteObject(DcRgn);
}
}
}
}