http://bugs.winehq.org/show_bug.cgi?id=1719
--- Comment #18 from Dylan Smith dylan.ah.smith@gmail.com 2010-06-19 20:40:56 --- Created an attachment (id=28993) --> (http://bugs.winehq.org/attachment.cgi?id=28993) Modified winefile for debugging the bug
The delphi application seem to be responding the WM_SIZE message in the child window. They seem to get the normal window rect with GetWindowPlacement, then for some reason use SetWindowPos on the just minimized window to resize it to the previous size.
The attached patch modifies winefile for debugging. Specifically it reproduces the bug in winefile by using SetWindowPos on WM_SIZE when the window is minimized, and prints the messages received during the SetWindowPos call (and dumping some interesting structures in the messages).
I found that WM_WINDOWPOSCHANGING was being sent with the proposed new size, but this size was fixed before WM_NCCALCSIZE was sent to the window. I also tried returning 0 without calling the DefWindowProc on WM_WINDOWPOSCHANGING to make sure that DefWindowProc didn't make the change. This implies that SetWindowPos fixes the value after sending WM_WINDOWPOSCHANGING in user32.
(Side note: I noticed that WM_GETMINMAXINFO sent from DefWindowProc on Windows had the ptReserved equal to the fixed size of an icon title, but wine seems to set this to the window rect's current top left position, but this isn't relevant for this bug.)