Reece Dunn msclrhd@googlemail.com writes:
diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c index 631d477..0850282 100644 --- a/dlls/user32/mdi.c +++ b/dlls/user32/mdi.c @@ -1132,6 +1132,7 @@ LRESULT MDIClientWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM hwnd, 0, csA->hOwner, (LPVOID)csA->lParam); }
InvalidateRect(hwnd, NULL, TRUE); return (LRESULT)child;
The window should have been exposed and repainted when the children got resized. If this doesn't happen it's a bug, but invalidating by hand is only hiding the problem.
On 3 February 2010 15:17, Alexandre Julliard julliard@winehq.org wrote:
Reece Dunn msclrhd@googlemail.com writes:
diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c index 631d477..0850282 100644 --- a/dlls/user32/mdi.c +++ b/dlls/user32/mdi.c @@ -1132,6 +1132,7 @@ LRESULT MDIClientWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM hwnd, 0, csA->hOwner, (LPVOID)csA->lParam); }
- InvalidateRect(hwnd, NULL, TRUE);
return (LRESULT)child;
The window should have been exposed and repainted when the children got resized. If this doesn't happen it's a bug, but invalidating by hand is only hiding the problem.
The MDI Client window is not getting painted when the maximised child window is restored. That is the core problem identified by that bug.
There are some message trail tests in dlls/user32/tests/msg.c, but not for the above scenario. I will extend the tests to investigate what is going on in this specific case.
- Reece