Explicitly ignore WM_GETICON message in the message tests
Dmitry Timoshkov
dmitry at baikal.ru
Wed Sep 28 09:40:48 CDT 2005
Hello,
it appears that WM_GETICON is being sent by the Windows explorer when
it gets some shell notification and tries to draw an application icon
in response to that action. Ignoring that message dramatically reduces
number of message tests failures under XP SP1 for me, and I suggest
to apply this patch to ignore this junk message.
Changelog:
Dmitry Timoshkov <dmitry at codeweavers.com>
Explicitly ignore WM_GETICON message in the message tests.
--- cvs/hq/wine/dlls/user/tests/msg.c Tue Sep 13 14:57:02 2005
+++ wine/dlls/user/tests/msg.c Wed Sep 28 14:33:51 2005
@@ -242,9 +242,6 @@ static const struct message WmShowMaxOve
{ WM_WINDOWPOSCHANGING, sent|wparam, SWP_NOSIZE|SWP_NOMOVE },
{ WM_ACTIVATEAPP, sent|wparam, 1 },
{ WM_NCACTIVATE, sent|wparam, 1 },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|defwinproc|optional },
{ WM_ACTIVATE, sent|wparam, 1 },
{ HCBT_SETFOCUS, hook },
@@ -619,11 +616,8 @@ static const struct message WmCreateCust
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
@@ -645,11 +639,8 @@ static const struct message WmCreateCust
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional|defwinproc },
{ WM_ERASEBKGND, sent },
@@ -660,11 +651,8 @@ static const struct message WmCreateCust
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
@@ -674,11 +662,8 @@ static const struct message WmCreateCust
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
- { WM_GETICON, sent|optional|defwinproc },
{ EVENT_OBJECT_DEFACTIONCHANGE, winevent_hook|wparam|lparam|optional, OBJID_CLIENT, 0 },
{ WM_GETTEXT, sent|optional|defwinproc },
{ WM_ERASEBKGND, sent|optional },
@@ -695,15 +680,9 @@ static const struct message WmEndCustomD
{ EVENT_OBJECT_HIDE, winevent_hook|wparam|lparam, 0, 0 },
{ WM_WINDOWPOSCHANGED, sent|wparam, SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE },
{ WM_GETTEXT, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ HCBT_ACTIVATE, hook },
{ WM_NCACTIVATE, sent|wparam, 0 },
{ WM_GETTEXT, sent|optional|defwinproc },
- { WM_GETICON, sent|optional|defwinproc },
- { WM_GETICON, sent|optional|defwinproc },
- { WM_GETICON, sent|optional|defwinproc },
{ WM_GETTEXT, sent|optional|defwinproc },
{ WM_ACTIVATE, sent|wparam, 0 },
{ EVENT_SYSTEM_FOREGROUND, winevent_hook|wparam|lparam, 0, 0 },
@@ -783,30 +762,18 @@ static const struct message WmModalDialo
{ WM_QUERYNEWPALETTE, sent|wparam|lparam|optional, 0, 0 },
{ WM_WINDOWPOSCHANGING, sent|wparam, SWP_NOSIZE|SWP_NOMOVE },
{ WM_NCACTIVATE, sent|wparam, 1 },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ WM_ACTIVATE, sent|wparam, 1 },
{ WM_WINDOWPOSCHANGING, sent|wparam, SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE },
{ EVENT_OBJECT_SHOW, winevent_hook|wparam|lparam, 0, 0 },
{ WM_NCPAINT, sent },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ WM_ERASEBKGND, sent },
{ WM_CTLCOLORDLG, sent },
{ WM_WINDOWPOSCHANGED, sent|wparam, SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ WM_NCCALCSIZE, sent|optional },
{ WM_NCPAINT, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ WM_ERASEBKGND, sent|optional },
{ WM_CTLCOLORDLG, sent|optional },
@@ -832,24 +799,15 @@ static const struct message WmModalDialo
{ WM_ENTERIDLE, sent|parent|optional },
{ WM_ENTERIDLE, sent|parent|optional },
{ WM_ENTERIDLE, sent|parent|optional },
- { WM_GETICON, sent|parent|optional },
- { WM_GETICON, sent|parent|optional },
- { WM_GETICON, sent|parent|optional },
{ WM_TIMER, sent },
{ EVENT_OBJECT_STATECHANGE, winevent_hook|wparam|lparam, 0, 0 },
{ WM_ENABLE, sent|parent|wparam, 1 },
{ WM_WINDOWPOSCHANGING, sent|wparam, SWP_HIDEWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE },
{ EVENT_OBJECT_HIDE, winevent_hook|wparam|lparam, 0, 0 },
{ WM_WINDOWPOSCHANGED, sent|wparam, SWP_HIDEWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ HCBT_ACTIVATE, hook },
{ WM_NCACTIVATE, sent|wparam, 0 },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ WM_ACTIVATE, sent|wparam, 0 },
{ EVENT_SYSTEM_FOREGROUND, winevent_hook|wparam|lparam, 0, 0 },
@@ -903,9 +861,6 @@ static const struct message WmSetMenuNon
{ WM_MOVE, sent|defwinproc },
{ WM_SIZE, sent|defwinproc },
{ EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ WM_NCCALCSIZE, sent|wparam|optional, 1 },
{ 0 }
@@ -1035,9 +990,6 @@ static const struct message WmSetScrollR
{ EVENT_OBJECT_REORDER, winevent_hook|wparam|lparam, 0, 0 },
{ WM_NCPAINT, sent|optional },
{ WM_GETTEXT, sent|defwinproc|optional },
- { WM_GETICON, sent|optional|defwinproc },
- { WM_GETICON, sent|optional|defwinproc },
- { WM_GETICON, sent|optional|defwinproc },
{ WM_GETTEXT, sent|defwinproc|optional },
{ WM_ERASEBKGND, sent|optional },
{ WM_CTLCOLORDLG, sent|defwinproc|optional }, /* sent to a parent of the dialog */
@@ -1045,17 +997,8 @@ static const struct message WmSetScrollR
{ WM_SIZE, sent|defwinproc },
{ EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 },
{ WM_GETTEXT, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|optional },
{ 0 }
};
@@ -1092,9 +1035,6 @@ static const struct message WmSHOWNATopI
{ WM_WINDOWPOSCHANGING, sent|wparam, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE },
{ EVENT_OBJECT_SHOW, winevent_hook|wparam|lparam, 0, 0 },
{ WM_NCPAINT, sent|wparam, 1 },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
- { WM_GETICON, sent|optional },
{ WM_GETTEXT, sent|defwinproc|optional },
{ WM_ERASEBKGND, sent|optional },
{ WM_WINDOWPOSCHANGED, sent|wparam, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE },
@@ -1275,8 +1215,6 @@ static const struct message WmCreateMDIf
{ WM_ACTIVATEAPP, sent|wparam, 1 },
{ WM_NCACTIVATE, sent|wparam, 1 },
{ WM_GETTEXT, sent|defwinproc|optional },
- { WM_GETICON, sent|defwinproc|optional },
- { WM_GETICON, sent|defwinproc|optional },
{ WM_ACTIVATE, sent|wparam, 1 },
{ HCBT_SETFOCUS, hook },
{ WM_IME_SETCONTEXT, sent|wparam|defwinproc|optional, 1 },
@@ -2032,6 +1970,7 @@ static LRESULT WINAPI mdi_client_hook_pr
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
message != WM_MDIGETACTIVE &&
+ message != WM_GETICON &&
message != WM_DEVICECHANGE)
{
trace("mdi client: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
@@ -2078,6 +2017,7 @@ static LRESULT WINAPI mdi_child_wnd_proc
message != WM_NCPAINT &&
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
+ message != WM_GETICON &&
message != WM_DEVICECHANGE)
{
trace("mdi child: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
@@ -2142,6 +2082,7 @@ static LRESULT WINAPI mdi_frame_wnd_proc
message != WM_NCPAINT &&
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
+ message != WM_GETICON &&
message != WM_DEVICECHANGE)
{
trace("mdi frame: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
@@ -2617,6 +2558,9 @@ static INT_PTR CALLBACK TestModalDlgProc
trace("dialog: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
+ /* explicitly ignore WM_GETICON message */
+ if (message == WM_GETICON) return 0;
+
switch (message)
{
case WM_WINDOWPOSCHANGING:
@@ -2966,7 +2910,7 @@ static void test_messages(void)
ok(GetFocus() == hwnd, "window should have input focus\n");
ShowWindow(hwnd, SW_HIDE);
ok_sequence(WmHideOverlappedSeq, "ShowWindow(SW_HIDE):overlapped", TRUE);
-
+
ShowWindow(hwnd, SW_SHOW);
ok_sequence(WmShowOverlappedSeq, "ShowWindow(SW_SHOW):overlapped", TRUE);
@@ -3358,6 +3302,9 @@ static LRESULT CALLBACK button_hook_proc
trace("button: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
+ /* explicitly ignore WM_GETICON message */
+ if (message == WM_GETICON) return 0;
+
msg.message = message;
msg.flags = sent|wparam|lparam;
if (defwndproc_counter) msg.flags |= defwinproc;
@@ -4295,6 +4242,7 @@ static void pump_msg_loop(HWND hwnd, HAC
/* ignore some unwanted messages */
if (msg.message == WM_MOUSEMOVE ||
+ msg.message == WM_GETICON ||
msg.message == WM_DEVICECHANGE)
continue;
@@ -4501,6 +4449,9 @@ static LRESULT WINAPI MsgCheckProcA(HWND
trace("%p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
+ /* explicitly ignore WM_GETICON message */
+ if (message == WM_GETICON) return 0;
+
switch (message)
{
case WM_ENABLE:
@@ -4640,6 +4591,9 @@ static LRESULT WINAPI PopupMsgCheckProcA
trace("popup: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
+ /* explicitly ignore WM_GETICON message */
+ if (message == WM_GETICON) return 0;
+
msg.message = message;
msg.flags = sent|wparam|lparam;
if (defwndproc_counter) msg.flags |= defwinproc;
@@ -4669,6 +4623,9 @@ static LRESULT WINAPI ParentMsgCheckProc
trace("parent: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
+ /* explicitly ignore WM_GETICON message */
+ if (message == WM_GETICON) return 0;
+
if (log_all_parent_messages ||
message == WM_PARENTNOTIFY || message == WM_CANCELMODE ||
message == WM_SETFOCUS || message == WM_KILLFOCUS ||
@@ -4708,6 +4665,9 @@ static LRESULT WINAPI TestDlgProcA(HWND
struct message msg;
trace("dialog: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
+
+ /* explicitly ignore WM_GETICON message */
+ if (message == WM_GETICON) return 0;
DefDlgProcA(hwnd, DM_SETDEFID, 1, 0);
ret = DefDlgProcA(hwnd, DM_GETDEFID, 0, 0);
More information about the wine-patches
mailing list