[PATCH 2/2] user32: Set SWP_NOSIZE for windows with SWP_NOREDRAW.
thestig at google.com
Tue Jul 8 16:41:22 CDT 2008
On Tue, Jul 8, 2008 at 2:10 AM, Alexandre Julliard <julliard at winehq.org> wrote:
> "Lei Zhang" <thestig at google.com> writes:
>> @@ -1808,6 +1808,10 @@ static BOOL fixup_flags( WINDOWPOS *winpos )
>> if ((wndPtr->rectWindow.right - wndPtr->rectWindow.left == winpos->cx) &&
>> (wndPtr->rectWindow.bottom - wndPtr->rectWindow.top == winpos->cy))
>> winpos->flags |= SWP_NOSIZE; /* Already the right size */
>> + else if (((winpos->flags & (SWP_NOZORDER|SWP_NOREDRAW|SWP_FRAMECHANGED|SWP_NOACTIVATE)) == SWP_NOREDRAW) &&
>> + (wndPtr->rectWindow.right - wndPtr->rectWindow.left == origSize.x) &&
>> + (wndPtr->rectWindow.bottom - wndPtr->rectWindow.top == origSize.y))
>> + winpos->flags |= SWP_NOSIZE; /* Already the right size */
> It makes no sense to compare the window rect against the original size
> since the window rect hasn't been changed yet, it will always
> match. Also I fail to see why this would have anything to do with
> SWP_NOREDRAW. I think you are on the wrong track with this bug.
You're right, the problem required more investigation and I'll have a
better patch soon. Though while running the user32 tests, I did see
situations where those comparisons do not return true.
More information about the wine-devel