[0.4.12] [WIN32SS] Appease regression CORE-15429 & fix CORE-15911

By applying for the first time clientFix.patch from CORE-15911 contributed by JIRA-user 'I_Kill_Bugs'.

The patch acts as a better replacement for a workaround of DougLyons from CORE-15429
that aimed to hide the issue for our file-browser only.

The new approach gave good results for the testbots
https://reactos.org/testman/compare.php?ids=66723,66729
but wasn't tested much yet. In case it causes any problems during testing-cycle,
I might eventually switch back to our old workaround instead from the last releases.
This commit is contained in:
Joachim Henze 2019-04-15 19:46:36 +02:00
parent d94028f042
commit 5ac548544f

View file

@ -1778,7 +1778,7 @@ co_WinPosSetWindowPos(
}
/* Calculate the non client area for resizes, as this is used in the copy region */
if (!(WinPos.flags & SWP_NOSIZE))
if ((WinPos.flags & (SWP_NOSIZE | SWP_FRAMECHANGED)) != SWP_NOSIZE)
{
VisBeforeJustClient = VIS_ComputeVisibleRegion(Window, TRUE, FALSE,
(Window->style & WS_CLIPSIBLINGS) ? TRUE : FALSE);
@ -1912,12 +1912,16 @@ co_WinPosSetWindowPos(
*/
CopyRgn = IntSysCreateRectpRgn(0, 0, 0, 0);
if (WinPos.flags & SWP_NOSIZE)
if ((WinPos.flags & SWP_NOSIZE) && (WinPos.flags & SWP_NOCLIENTSIZE))
RgnType = IntGdiCombineRgn(CopyRgn, VisAfter, VisBefore, RGN_AND);
else if (VisBeforeJustClient != NULL)
{
RgnType = IntGdiCombineRgn(CopyRgn, VisAfter, VisBeforeJustClient, RGN_AND);
REGION_Delete(VisBeforeJustClient);
}
if (VisBeforeJustClient != NULL)
{
REGION_Delete(VisBeforeJustClient);
}
/* Now use in copying bits which are in the update region. */