On Tue, Jul 8, 2008 at 2:10 AM, Alexandre Julliard julliard@winehq.org wrote:
"Lei Zhang" thestig@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.