I've looked at the user32/tests/msg.c and there are some number of tests that are set to todo_wine. Conincedentaly number of those tests are a biggest problems (looking at bugzilla). For example WmSHOWNATopInvisible message sequence is failing on Wine because of absent WM_NCPAINT message. Could this be the source of the problem for all those full-screen programs that are being "lost" when switching between displays or minimizing / restoring windows.
I've tried to track this problem down but can't pinpoint the exact location where this masage should be sent. Is Wine missing a step somewhere (see attachment)? From what I can tell it should be somewhere between mapping the window and WM_WINDOWPOSCHANGED notification.
Also worth noting all the MDI tests that fail on Wine. It seems there are fair amount of bugs filed that are related to this tests.
IMHO some if not all of those failing tests should be fixed. This is core functionality and there are no excuses for not having it working.
I'd say that is much more important them some bugs listed on 1.0 list.
Vitaliy.
msg.c:3735:calling ShowWindow( SW_SHOWNA) for invisible top level window trace:win:show_window hwnd=0x20020, cmd=8, wasVisible 0 trace:message:SPY_EnterMessage (0x20020) L"Test overlapped" message [0018] WM_SHOWWINDOW sent from self wp=00000001 lp=00000000 msg.c:6147:0x20020, 0018, 00000001, 00000000 trace:message:SPY_EnterMessage (0x20020) DefWindowProc32: WM_SHOWWINDOW [0018] wp=00000001 lp=00000000 trace:message:SPY_ExitMessage (0x20020) DefWindowProc32: WM_SHOWWINDOW [0018] returned 00000000 trace:message:SPY_ExitMessage (0x20020) L"Test overlapped" message [0018] WM_SHOWWINDOW returned 00000000 trace:win:SetWindowPos hwnd 0x20020, after (nil), 0,0 (0x0), flags 00000053 trace:win:dump_winpos_flags flags: SWP_NOSIZE SWP_NOMOVE SWP_NOACTIVATE SWP_SHOWWINDOW trace:message:SPY_EnterMessage (0x20020) L"Test overlapped" message [0046] WM_WINDOWPOSCHANGING sent from self wp=00000000 lp=0034fc10 trace:message:SPY_DumpStructure WINDOWPOS hwnd=0x20020, after=(nil), at (0,0) w=0 h=0, flags=0x00000053 msg.c:6147:0x20020, 0046, 00000000, 0034fc10 msg.c:6219:WM_WINDOWPOSCHANGING msg.c:6220:0x20020 after (nil), x 0, y 0, cx 0, cy 0 flags 00000053 |SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE trace:message:SPY_EnterMessage (0x20020) DefWindowProc32: WM_WINDOWPOSCHANGING [0046] wp=00000053 lp=0034fc10 trace:message:SPY_ExitMessage (0x20020) DefWindowProc32: WM_WINDOWPOSCHANGING [0046] returned 00000000 trace:message:SPY_ExitMessage (0x20020) L"Test overlapped" message [0046] WM_WINDOWPOSCHANGING returned 00000000 trace:message:SPY_DumpStructure WINDOWPOS hwnd=0x20020, after=(nil), at (0,0) w=0 h=0, flags=0x00000053 trace:win:SWP_DoWinPosChanging hwnd 0x20020, after (nil), swp 0,0 0x0 flags 00001853 trace:win:SWP_DoWinPosChanging current (100,100)-(300,300) style 04cf0000 new (100,100)-(300,300) trace:win:SWP_DoOwnedPopups (0x20020) hInsertAfter = (nil) trace:win:GetWindowRect hwnd 0x20020 ((100,100)-(300,300)) trace:x11drv:create_whole_window making win 0x20020/0 managed trace:message:SPY_EnterMessage (0x20020) L"Test overlapped" message [007f] WM_GETICON sent from self wp=00000001 lp=00000000 msg.c:6147:0x20020, 007f, 00000001, 00000000 trace:message:SPY_ExitMessage (0x20020) L"Test overlapped" message [007f] WM_GETICON returned 00000000 trace:x11drv:create_icon_window created 4600007 trace:x11drv:X11DRV_create_win_data win 0x20020/4600005/4600006 window (100,100)-(300,300) whole (100,100)-(300,300) client (104,123)-(296,296) trace:x11drv:X11DRV_SetWindowPos 0x20020: need to update visible rect (100,100)-(300,300) -> (104,123)-(296,296) trace:x11drv:X11DRV_SetWindowPos win 0x20020 window (100,100)-(300,300) client (104,123)-(296,296) style 14cf0000 flags 00001857 trace:x11drv:X11DRV_sync_client_position setting client win 4600006 pos 0,0,192x173 changes=3 trace:x11drv:X11DRV_sync_window_position setting win 4600005 pos 104,123,192x173 after c4 changes=f trace:x11drv:X11DRV_SetWindowPos mapping win 0x20020/4600005 trace:win:GetWindowRect hwnd 0x20020 ((100,100)-(300,300)) trace:win:invalidate_dce 0x20020 scope hwnd = 0x10024 (100,100)-(300,300) ((100,100)-(300,300)) trace:win:USER_SetWindowPos status flags = 1847 trace:message:SPY_EnterMessage (0x20020) L"Test overlapped" message [0047] WM_WINDOWPOSCHANGED sent from self wp=00000000 lp=0034fc10 trace:message:SPY_DumpStructure WINDOWPOS hwnd=0x20020, after=(nil), at (100,100) w=200 h=200, flags=0x00001857 msg.c:6147:0x20020, 0047, 00000000, 0034fc10 msg.c:6219:WM_WINDOWPOSCHANGED msg.c:6220:0x20020 after (nil), x 100, y 100, cx 200, cy 200 flags 00001857 |SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE trace:message:SPY_EnterMessage (0x20020) DefWindowProc32: WM_WINDOWPOSCHANGED [0047] wp=00001853 lp=0034fc10 trace:message:SPY_ExitMessage (0x20020) DefWindowProc32: WM_WINDOWPOSCHANGED [0047] returned 00000000 trace:message:SPY_ExitMessage (0x20020) L"Test overlapped" message [0047] WM_WINDOWPOSCHANGED returned 00000000 trace:message:SPY_EnterMessage (0x20020) L"Test overlapped" message [0005] WM_SIZE sent from self wp=00000000 lp=00ad00c0 trace:message:SPY_DumpStructure cx=192 cy=173 msg.c:6147:0x20020, 0005, 00000000, 00ad00c0 trace:message:SPY_EnterMessage (0x20020) DefWindowProc32: WM_SIZE [0005] wp=00000000 lp=00ad00c0 trace:message:SPY_ExitMessage (0x20020) DefWindowProc32: WM_SIZE [0005] returned 00000000 trace:message:SPY_ExitMessage (0x20020) L"Test overlapped" message [0005] WM_SIZE returned 00000000 trace:message:SPY_EnterMessage (0x20020) L"Test overlapped" message [0003] WM_MOVE sent from self wp=00000000 lp=007b0068 msg.c:6147:0x20020, 0003, 00000000, 007b0068 trace:message:SPY_EnterMessage (0x20020) DefWindowProc32: WM_MOVE [0003] wp=00000000 lp=007b0068 trace:message:SPY_ExitMessage (0x20020) DefWindowProc32: WM_MOVE [0003] returned 00000000 trace:message:SPY_ExitMessage (0x20020) L"Test overlapped" message [0003] WM_MOVE returned 00000000 msg.c:3737:expected 0018 - actual 0018 msg.c:3737:expected 0046 - actual 0046 msg.c:3737:expected 8002 - actual 0047 msg.c:3737:expected 0085 - actual 0047 msg.c:3737: Test failed: ShowWindow(SW_SHOWNA) on invisible top level window: the msg 0x0085 was expected, but got msg 0x0047 instead msg.c:3737:expected 000d - actual 0005 msg.c:3737:expected 0014 - actual 0005 msg.c:3737:expected 0047 - actual 0005 msg.c:3737: Test failed: ShowWindow(SW_SHOWNA) on invisible top level window: the msg 0x0047 was expected, but got msg 0x0005 instead msg.c:3737:expected 0083 - actual 0003 msg.c:3737:expected 0085 - actual 0003 msg.c:3737:expected 0014 - actual 0003 msg.c:3737:expected 800b - actual 0003 msg.c:3737:expected 0005 - actual 0003 msg.c:3737: Test failed: ShowWindow(SW_SHOWNA) on invisible top level window: the msg 0x0005 was expected, but got msg 0x0003 instead msg.c:3737: Test failed: ShowWindow(SW_SHOWNA) on invisible top level window: the msg sequence is not complete: expected 0003 - actual 0000 msg.c:3738:done