From 684902c4cce0342ffdac94de1c8d66ccb0dd53ab Mon Sep 17 00:00:00 2001 From: James Tabor Date: Wed, 31 Aug 2016 17:59:41 +0000 Subject: [PATCH] [NtUser] - Fix test results for msg:msg_queue:test_broadcast. svn path=/trunk/; revision=72522 --- reactos/win32ss/user/ntuser/message.c | 35 ++++++++++++--------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/reactos/win32ss/user/ntuser/message.c b/reactos/win32ss/user/ntuser/message.c index f4c75b284bc..3dd4e9181ad 100644 --- a/reactos/win32ss/user/ntuser/message.c +++ b/reactos/win32ss/user/ntuser/message.c @@ -554,6 +554,11 @@ IdlePong(VOID) } } +static BOOL is_message_broadcastable(UINT msg) +{ + return msg < WM_USER || msg >= 0xc000; +} + UINT FASTCALL GetWakeMask(UINT first, UINT last ) { @@ -1200,12 +1205,14 @@ UserPostMessage( HWND Wnd, return FALSE; } - if (Wnd == HWND_BROADCAST) + if (Wnd == HWND_BROADCAST || Wnd == HWND_TOPMOST) { HWND *List; PWND DesktopWindow; ULONG i; + if (!is_message_broadcastable(Msg)) return TRUE; + DesktopWindow = UserGetDesktopWindow(); List = IntWinListChildren(DesktopWindow); @@ -1495,6 +1502,8 @@ co_IntSendMessageTimeout( HWND hWnd, return co_IntSendMessageTimeoutSingle(hWnd, Msg, wParam, lParam, uFlags, uTimeout, uResult); } + if (!is_message_broadcastable(Msg)) return TRUE; + DesktopWindow = UserGetDesktopWindow(); if (NULL == DesktopWindow) { @@ -1516,26 +1525,14 @@ co_IntSendMessageTimeout( HWND hWnd, for (Child = Children; NULL != *Child; Child++) { - if (hWnd == HWND_TOPMOST) - { - DesktopWindow = UserGetWindowObject(*Child); - if (DesktopWindow && DesktopWindow->ExStyle & WS_EX_TOPMOST) - { - ERR("HWND_TOPMOST Found\n"); - co_IntSendMessageTimeoutSingle(*Child, Msg, wParam, lParam, uFlags, uTimeout, uResult); - } - } - else - { - PWND pwnd = UserGetWindowObject(*Child); - if (!pwnd) continue; + PWND pwnd = UserGetWindowObject(*Child); + if (!pwnd) continue; - if ( pwnd->fnid == FNID_MENU || - pwnd->pcls->atomClassName == gpsi->atomSysClass[ICLS_SWITCH] ) - continue; + if ( pwnd->fnid == FNID_MENU || + pwnd->pcls->atomClassName == gpsi->atomSysClass[ICLS_SWITCH] ) + continue; - co_IntSendMessageTimeoutSingle(*Child, Msg, wParam, lParam, uFlags, uTimeout, uResult); - } + co_IntSendMessageTimeoutSingle(*Child, Msg, wParam, lParam, uFlags, uTimeout, uResult); } ExFreePoolWithTag(Children, USERTAG_WINDOWLIST);