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