Rebase against 00b68720bf32748422e6ccab8629acf04aec9d5a.

[user32-Revert_Popup_Menu]
Removed patch to fix a regression causing popup menus stay open
(accepted upstream).

[user32-WM_CTLCOLORBTN]
Removed patch to replicate Windows behavior of WM_SETTEXT handler
regarding WM_CTLCOLOR* messages (accepted upstream).

[user32-WM_MDICALCCHILDSCROLL]
Removed patch to change value of WM_MDICALCCHILDSCROLL to 0x003f
(accepted upstream).

[user32-WM_NOTIFY]
Removed patch to fix handling of WM_NOTIFY messages in PostThreadMessage
(accepted upstream).
This commit is contained in:
Sebastian Lackner 2016-04-21 07:10:49 +02:00
parent cc990d9a9b
commit ed798c278d
9 changed files with 1 additions and 482 deletions

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "ab78cffea7ac676a7041c7d6941b61140cfe005c"
echo "00b68720bf32748422e6ccab8629acf04aec9d5a"
}
# Show version information
@ -332,12 +332,8 @@ patch_enable_all ()
enable_user32_Mouse_Message_Hwnd="$1"
enable_user32_PNG_Support="$1"
enable_user32_Refresh_MDI_Menus="$1"
enable_user32_Revert_Popup_Menu="$1"
enable_user32_ScrollWindowEx="$1"
enable_user32_SetCoalescableTimer="$1"
enable_user32_WM_CTLCOLORBTN="$1"
enable_user32_WM_MDICALCCHILDSCROLL="$1"
enable_user32_WM_NOTIFY="$1"
enable_user32_WndProc="$1"
enable_user32_lpCreateParams="$1"
enable_uxtheme_GTK_Theming="$1"
@ -1175,24 +1171,12 @@ patch_enable ()
user32-Refresh_MDI_Menus)
enable_user32_Refresh_MDI_Menus="$2"
;;
user32-Revert_Popup_Menu)
enable_user32_Revert_Popup_Menu="$2"
;;
user32-ScrollWindowEx)
enable_user32_ScrollWindowEx="$2"
;;
user32-SetCoalescableTimer)
enable_user32_SetCoalescableTimer="$2"
;;
user32-WM_CTLCOLORBTN)
enable_user32_WM_CTLCOLORBTN="$2"
;;
user32-WM_MDICALCCHILDSCROLL)
enable_user32_WM_MDICALCCHILDSCROLL="$2"
;;
user32-WM_NOTIFY)
enable_user32_WM_NOTIFY="$2"
;;
user32-WndProc)
enable_user32_WndProc="$2"
;;
@ -6852,21 +6836,6 @@ if test "$enable_user32_Refresh_MDI_Menus" -eq 1; then
) >> "$patchlist"
fi
# Patchset user32-Revert_Popup_Menu
# |
# | This patchset fixes the following Wine bugs:
# | * [#40474] Fix a regression causing popup menus stay open
# |
# | Modified files:
# | * dlls/user32/menu.c
# |
if test "$enable_user32_Revert_Popup_Menu" -eq 1; then
patch_apply user32-Revert_Popup_Menu/0001-Revert-user32-Set-capture-earlier-on-popup-menus.patch
(
echo '+ { "Sebastian Lackner", "Revert \"user32: Set capture earlier on popup menus.\".", 1 },';
) >> "$patchlist"
fi
# Patchset user32-ScrollWindowEx
# |
# | This patchset fixes the following Wine bugs:
@ -6897,50 +6866,6 @@ if test "$enable_user32_SetCoalescableTimer" -eq 1; then
) >> "$patchlist"
fi
# Patchset user32-WM_CTLCOLORBTN
# |
# | This patchset fixes the following Wine bugs:
# | * [#25790] Replicate Windows behavior of WM_SETTEXT handler regarding WM_CTLCOLOR* messages
# |
# | Modified files:
# | * dlls/user32/button.c, dlls/user32/tests/msg.c
# |
if test "$enable_user32_WM_CTLCOLORBTN" -eq 1; then
patch_apply user32-WM_CTLCOLORBTN/0001-user32-Replicate-Windows-behavior-of-WM_SETTEXT-hand.patch
patch_apply user32-WM_CTLCOLORBTN/0002-user32-tests-Add-tests-for-button-WM_CTLCOLOR-messag.patch
(
echo '+ { "Alexander Law", "user32: Replicate Windows behavior of WM_SETTEXT handler regarding WM_CTLCOLOR*.", 1 },';
echo '+ { "Sebastian Lackner", "user32/tests: Add tests for button WM_CTLCOLOR* messages.", 1 },';
) >> "$patchlist"
fi
# Patchset user32-WM_MDICALCCHILDSCROLL
# |
# | Modified files:
# | * dlls/user32/mdi.c, dlls/user32/tests/win.c
# |
if test "$enable_user32_WM_MDICALCCHILDSCROLL" -eq 1; then
patch_apply user32-WM_MDICALCCHILDSCROLL/0001-user32-Change-value-for-WM_MDICALCCHILDSCROLL-to-0x0.patch
(
echo '+ { "Dmitry Timoshkov", "user32: Change value for WM_MDICALCCHILDSCROLL to 0x003f.", 1 },';
) >> "$patchlist"
fi
# Patchset user32-WM_NOTIFY
# |
# | This patchset fixes the following Wine bugs:
# | * [#40244] Fix handling of WM_NOTIFY messages in PostThreadMessage
# |
# | Modified files:
# | * dlls/user32/message.c, dlls/user32/tests/msg.c
# |
if test "$enable_user32_WM_NOTIFY" -eq 1; then
patch_apply user32-WM_NOTIFY/0001-user32-Allow-to-send-post-intra-process-WM_NOTIFY-me.patch
(
echo '+ { "Sebastian Lackner", "user32: Do not block sending/posting WM_NOTIFY messages.", 1 },';
) >> "$patchlist"
fi
# Patchset user32-WndProc
# |
# | This patchset fixes the following Wine bugs:

View File

@ -1,58 +0,0 @@
From 2a11dd26b5c7b20fb3c8d30c0948a0eea60e9237 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 19 Apr 2016 15:41:46 +0200
Subject: Revert "user32: Set capture earlier on popup menus."
This reverts commit a9bff001a1e2c919b3f6e68d642abb8da957a2bf.
---
dlls/user32/menu.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c
index 7a49ac0..e42d8f7 100644
--- a/dlls/user32/menu.c
+++ b/dlls/user32/menu.c
@@ -3003,6 +3003,7 @@ static BOOL MENU_TrackMenu( HMENU hmenu, UINT wFlags, INT x, INT y,
INT executedMenuId = -1;
MTRACKER mt;
BOOL enterIdleSent = FALSE;
+ HWND capture_win;
mt.trackFlags = 0;
mt.hCurrentMenu = hmenu;
@@ -3030,8 +3031,9 @@ static BOOL MENU_TrackMenu( HMENU hmenu, UINT wFlags, INT x, INT y,
if (wFlags & TF_ENDMENU) fEndMenu = TRUE;
- if (!(wFlags & TPM_POPUPMENU))
- set_capture_window( mt.hOwnerWnd, GUI_INMENUMODE, NULL );
+ /* owner may not be visible when tracking a popup, so use the menu itself */
+ capture_win = (wFlags & TPM_POPUPMENU) ? menu->hWnd : mt.hOwnerWnd;
+ set_capture_window( capture_win, GUI_INMENUMODE, NULL );
if ((wFlags & TPM_POPUPMENU) && menu->nItems == 0)
return FALSE;
@@ -3327,10 +3329,6 @@ static BOOL MENU_InitTracking(HWND hWnd, HMENU hMenu, BOOL bPopup, UINT wFlags)
SendMessageW( hWnd, WM_SETCURSOR, (WPARAM)hWnd, HTCAPTION );
- if (bPopup)
- /* owner may not be visible when tracking a popup, so use the menu itself */
- set_capture_window( menu->hWnd, GUI_INMENUMODE, NULL );
-
if (!(wFlags & TPM_NONOTIFY))
{
SendMessageW( hWnd, WM_INITMENU, (WPARAM)hMenu, 0 );
@@ -3484,9 +3482,6 @@ BOOL WINAPI TrackPopupMenuEx( HMENU hMenu, UINT wFlags, INT x, INT y,
if (MENU_ShowPopup( hWnd, hMenu, 0, wFlags, x, y, 0, 0 ))
ret = MENU_TrackMenu( hMenu, wFlags | TPM_POPUPMENU, 0, 0, hWnd,
lpTpm ? &lpTpm->rcExclude : NULL );
-
- set_capture_window( 0, GUI_INMENUMODE, NULL );
-
MENU_ExitTracking(hWnd, TRUE);
if (menu->hWnd)
--
2.7.1

View File

@ -1 +0,0 @@
Fixes: [40474] Fix a regression causing popup menus stay open

View File

@ -1,73 +0,0 @@
From e48498bd46044ebfad0ae16e8f6dd08976b49b14 Mon Sep 17 00:00:00 2001
From: Alexander Law <exclusion@gmail.com>
Date: Mon, 31 Jan 2011 22:59:13 +0300
Subject: user32: Replicate Windows behavior of WM_SETTEXT handler regarding
WM_CTLCOLOR*.
---
dlls/user32/button.c | 49 +++++++++++++++++++++++++++++--------------------
1 file changed, 29 insertions(+), 20 deletions(-)
diff --git a/dlls/user32/button.c b/dlls/user32/button.c
index 9c52147..5b52510 100644
--- a/dlls/user32/button.c
+++ b/dlls/user32/button.c
@@ -385,26 +385,35 @@ LRESULT ButtonWndProc_common(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
case WM_SETTEXT:
{
/* Clear an old text here as Windows does */
- HDC hdc = GetDC(hWnd);
- HBRUSH hbrush;
- RECT client, rc;
- HWND parent = GetParent(hWnd);
-
- if (!parent) parent = hWnd;
- hbrush = (HBRUSH)SendMessageW(parent, WM_CTLCOLORSTATIC,
- (WPARAM)hdc, (LPARAM)hWnd);
- if (!hbrush) /* did the app forget to call DefWindowProc ? */
- hbrush = (HBRUSH)DefWindowProcW(parent, WM_CTLCOLORSTATIC,
- (WPARAM)hdc, (LPARAM)hWnd);
-
- GetClientRect(hWnd, &client);
- rc = client;
- BUTTON_CalcLabelRect(hWnd, hdc, &rc);
- /* Clip by client rect bounds */
- if (rc.right > client.right) rc.right = client.right;
- if (rc.bottom > client.bottom) rc.bottom = client.bottom;
- FillRect(hdc, &rc, hbrush);
- ReleaseDC(hWnd, hdc);
+ if (IsWindowVisible(hWnd))
+ {
+ HDC hdc = GetDC(hWnd);
+ HBRUSH hbrush;
+ RECT client, rc;
+ HWND parent = GetParent(hWnd);
+ UINT message = (btn_type == BS_PUSHBUTTON ||
+ btn_type == BS_DEFPUSHBUTTON ||
+ btn_type == BS_PUSHLIKE ||
+ btn_type == BS_USERBUTTON ||
+ btn_type == BS_OWNERDRAW) ?
+ WM_CTLCOLORBTN : WM_CTLCOLORSTATIC;
+
+ if (!parent) parent = hWnd;
+ hbrush = (HBRUSH)SendMessageW(parent, message,
+ (WPARAM)hdc, (LPARAM)hWnd);
+ if (!hbrush) /* did the app forget to call DefWindowProc ? */
+ hbrush = (HBRUSH)DefWindowProcW(parent, message,
+ (WPARAM)hdc, (LPARAM)hWnd);
+
+ GetClientRect(hWnd, &client);
+ rc = client;
+ BUTTON_CalcLabelRect(hWnd, hdc, &rc);
+ /* Clip by client rect bounds */
+ if (rc.right > client.right) rc.right = client.right;
+ if (rc.bottom > client.bottom) rc.bottom = client.bottom;
+ FillRect(hdc, &rc, hbrush);
+ ReleaseDC(hWnd, hdc);
+ }
if (unicode) DefWindowProcW( hWnd, WM_SETTEXT, wParam, lParam );
else DefWindowProcA( hWnd, WM_SETTEXT, wParam, lParam );
--
2.7.1

View File

@ -1,151 +0,0 @@
From aa33498b984e6505af86206a61d14b51c3531644 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 28 Feb 2016 07:55:21 +0100
Subject: user32/tests: Add tests for button WM_CTLCOLOR* messages.
---
dlls/user32/tests/msg.c | 80 ++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 69 insertions(+), 11 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index b2a005a..6794d92 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -5483,6 +5483,35 @@ static const struct message WmSetFontStaticSeq[] =
{ WM_CTLCOLORSTATIC, sent|defwinproc },
{ 0 }
};
+static const struct message WmSetTextButtonSeq[] =
+{
+ { WM_SETTEXT, sent },
+ { WM_CTLCOLORBTN, sent|parent },
+ { WM_CTLCOLORBTN, sent|parent },
+ { WM_COMMAND, sent|parent|optional },
+ { WM_DRAWITEM, sent|parent|optional },
+ { 0 }
+};
+static const struct message WmSetTextStaticSeq[] =
+{
+ { WM_SETTEXT, sent },
+ { WM_CTLCOLORSTATIC, sent|parent },
+ { WM_CTLCOLORSTATIC, sent|parent },
+ { 0 }
+};
+static const struct message WmSetTextGroupSeq[] =
+{
+ { WM_SETTEXT, sent },
+ { WM_CTLCOLORSTATIC, sent|parent },
+ { WM_CTLCOLORSTATIC, sent|parent|optional }, /* FIXME: Missing in Wine */
+ { WM_CTLCOLORSTATIC, sent|parent|optional }, /* FIXME: Missing in Wine */
+ { 0 }
+};
+static const struct message WmSetTextInvisibleSeq[] =
+{
+ { WM_SETTEXT, sent },
+ { 0 }
+};
static const struct message WmSetStyleButtonSeq[] =
{
{ BM_SETSTYLE, sent },
@@ -5652,51 +5681,63 @@ static void test_button_messages(void)
const struct message *lbuttondown;
const struct message *lbuttonup;
const struct message *setfont;
+ const struct message *settext;
} button[] = {
{ BS_PUSHBUTTON, DLGC_BUTTON | DLGC_UNDEFPUSHBUTTON,
WmSetFocusButtonSeq, WmKillFocusButtonSeq, WmSetStyleButtonSeq,
WmSetStateButtonSeq, WmSetStateButtonSeq, WmSetCheckIgnoredSeq,
- WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq },
+ WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq,
+ WmSetTextButtonSeq },
{ BS_DEFPUSHBUTTON, DLGC_BUTTON | DLGC_DEFPUSHBUTTON,
WmSetFocusButtonSeq, WmKillFocusButtonSeq, WmSetStyleButtonSeq,
WmSetStateButtonSeq, WmSetStateButtonSeq, WmSetCheckIgnoredSeq,
- WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq },
+ WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq,
+ WmSetTextButtonSeq },
{ BS_CHECKBOX, DLGC_BUTTON,
WmSetFocusStaticSeq, WmKillFocusStaticSeq, WmSetStyleStaticSeq,
WmSetStateStaticSeq, WmSetStateStaticSeq, WmSetCheckStaticSeq,
- WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq },
+ WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq,
+ WmSetTextStaticSeq },
{ BS_AUTOCHECKBOX, DLGC_BUTTON,
WmSetFocusStaticSeq, WmKillFocusStaticSeq, WmSetStyleStaticSeq,
WmSetStateStaticSeq, WmSetStateStaticSeq, WmSetCheckStaticSeq,
- WmLButtonDownStaticSeq, WmLButtonUpAutoSeq, WmSetFontStaticSeq },
+ WmLButtonDownStaticSeq, WmLButtonUpAutoSeq, WmSetFontStaticSeq,
+ WmSetTextStaticSeq },
{ BS_RADIOBUTTON, DLGC_BUTTON | DLGC_RADIOBUTTON,
WmSetFocusStaticSeq, WmKillFocusStaticSeq, WmSetStyleStaticSeq,
WmSetStateStaticSeq, WmSetStateStaticSeq, WmSetCheckStaticSeq,
- WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq },
+ WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq,
+ WmSetTextStaticSeq },
{ BS_3STATE, DLGC_BUTTON,
WmSetFocusStaticSeq, WmKillFocusStaticSeq, WmSetStyleStaticSeq,
WmSetStateStaticSeq, WmSetStateStaticSeq, WmSetCheckStaticSeq,
- WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq },
+ WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq,
+ WmSetTextStaticSeq },
{ BS_AUTO3STATE, DLGC_BUTTON,
WmSetFocusStaticSeq, WmKillFocusStaticSeq, WmSetStyleStaticSeq,
WmSetStateStaticSeq, WmSetStateStaticSeq, WmSetCheckStaticSeq,
- WmLButtonDownStaticSeq, WmLButtonUpAutoSeq, WmSetFontStaticSeq },
+ WmLButtonDownStaticSeq, WmLButtonUpAutoSeq, WmSetFontStaticSeq,
+ WmSetTextStaticSeq },
{ BS_GROUPBOX, DLGC_STATIC,
WmSetFocusStaticSeq, WmKillFocusStaticSeq, WmSetStyleStaticSeq,
WmSetStateStaticSeq, WmSetStateStaticSeq, WmSetCheckIgnoredSeq,
- WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq },
+ WmLButtonDownStaticSeq, WmLButtonUpStaticSeq, WmSetFontStaticSeq,
+ WmSetTextGroupSeq },
{ BS_USERBUTTON, DLGC_BUTTON | DLGC_UNDEFPUSHBUTTON,
WmSetFocusButtonSeq, WmKillFocusButtonSeq, WmSetStyleUserSeq,
WmSetStateUserSeq, WmClearStateButtonSeq, WmSetCheckIgnoredSeq,
- WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq },
+ WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq,
+ WmSetTextButtonSeq },
{ BS_AUTORADIOBUTTON, DLGC_BUTTON | DLGC_RADIOBUTTON,
WmSetFocusStaticSeq, WmKillFocusStaticSeq, WmSetStyleStaticSeq,
WmSetStateStaticSeq, WmSetStateStaticSeq, WmSetCheckStaticSeq,
- NULL /* avoid infinite loop */, WmLButtonUpBrokenSeq, WmSetFontStaticSeq },
+ NULL /* avoid infinite loop */, WmLButtonUpBrokenSeq, WmSetFontStaticSeq,
+ WmSetTextStaticSeq },
{ BS_OWNERDRAW, DLGC_BUTTON,
WmSetFocusOwnerdrawSeq, WmKillFocusOwnerdrawSeq, WmSetStyleOwnerdrawSeq,
WmSetStateOwnerdrawSeq, WmClearStateOwnerdrawSeq, WmSetCheckIgnoredSeq,
- WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq },
+ WmLButtonDownSeq, WmLButtonUpSeq, WmSetFontButtonSeq,
+ WmSetTextButtonSeq },
};
unsigned int i;
HWND hwnd, parent;
@@ -5830,6 +5871,23 @@ static void test_button_messages(void)
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
ok_sequence(button[i].setcheck, "BM_SETCHECK on a button", FALSE);
+ flush_sequence();
+
+ SendMessageA(hwnd, WM_SETTEXT, 0, (LPARAM)"Text 1");
+ sprintf(desc, "button[%i]: WM_SETTEXT on a visible button", i);
+ ok_sequence(button[i].settext, desc, FALSE);
+
+ ShowWindow(parent, SW_HIDE);
+ flush_events();
+ flush_sequence();
+
+ SendMessageA(hwnd, WM_SETTEXT, 0, (LPARAM)"Text 2");
+ sprintf(desc, "button[%i]: WM_SETTEXT on an invisible button", i);
+ ok_sequence(WmSetTextInvisibleSeq, desc, FALSE);
+
+ ShowWindow(parent, SW_SHOW);
+ flush_events();
+
state = SendMessageA(hwnd, BM_GETCHECK, 0, 0);
if (button[i].style == BS_PUSHBUTTON ||
button[i].style == BS_DEFPUSHBUTTON ||
--
2.7.1

View File

@ -1 +0,0 @@
Fixes: [25790] Replicate Windows behavior of WM_SETTEXT handler regarding WM_CTLCOLOR* messages

View File

@ -1,45 +0,0 @@
From 3a234761ed79e75dfb9d9ae68812ef11ea3dcecd Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 20 Nov 2015 16:38:22 +0800
Subject: user32: Change value for WM_MDICALCCHILDSCROLL to 0x003f.
This appears to be what Windows uses.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/user32/mdi.c | 2 +-
dlls/user32/tests/win.c | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c
index b5a0473..46a68ab8 100644
--- a/dlls/user32/mdi.c
+++ b/dlls/user32/mdi.c
@@ -103,7 +103,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mdi);
#define MDI_MAXTITLELENGTH 0xa1
-#define WM_MDICALCCHILDSCROLL 0x10ac /* this is exactly what Windows uses */
+#define WM_MDICALCCHILDSCROLL 0x003f /* this is exactly what Windows uses */
/* "More Windows..." definitions */
#define MDI_MOREWINDOWSLIMIT 9 /* after this number of windows, a "More Windows..."
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index fc6505f..9901789 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -2115,11 +2115,9 @@ static void test_mdi(void)
gotit = TRUE;
}
else
-todo_wine
ok(msg.hwnd != mdi_client, "message %04x should not be posted to mdiclient\n", msg.message);
DispatchMessageA(&msg);
}
-todo_wine
ok(gotit, "message 0x003f should appear after SetWindowPos\n");
si.cbSize = sizeof(si);
--
2.6.2

View File

@ -1,76 +0,0 @@
From 5fa145bd58a20534e11e746a4bcdb646f13e7779 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 7 Mar 2016 08:31:26 +0100
Subject: user32: Do not block sending/posting WM_NOTIFY messages.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
---
dlls/user32/message.c | 3 +--
dlls/user32/tests/msg.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index 9e0ce05..8c3a115 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -310,8 +310,7 @@ static const unsigned int message_pointer_flags[] =
SET(WM_GETMINMAXINFO) | SET(WM_DRAWITEM) | SET(WM_MEASUREITEM) | SET(WM_DELETEITEM) |
SET(WM_COMPAREITEM),
/* 0x40 - 0x5f */
- SET(WM_WINDOWPOSCHANGING) | SET(WM_WINDOWPOSCHANGED) | SET(WM_COPYDATA) |
- SET(WM_NOTIFY) | SET(WM_HELP),
+ SET(WM_WINDOWPOSCHANGING) | SET(WM_WINDOWPOSCHANGED) | SET(WM_COPYDATA) | SET(WM_HELP),
/* 0x60 - 0x7f */
SET(WM_STYLECHANGING) | SET(WM_STYLECHANGED),
/* 0x80 - 0x9f */
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 47d754f..72d6fca 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -11188,6 +11188,35 @@ static void test_quit_message(void)
ok_sequence(WmStopQuitSeq, "WmStopQuitSeq", FALSE);
}
+static void test_notify_message(void)
+{
+ HWND hwnd;
+ BOOL ret;
+
+ hwnd = CreateWindowExA(0, "TestWindowClass", NULL, WS_OVERLAPPEDWINDOW,
+ CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, 0, NULL, NULL, 0);
+ ok(hwnd != 0, "Failed to create window\n");
+
+ ret = SendNotifyMessageA(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
+ ok(ret == TRUE, "SendNotifyMessageA failed with error %u\n", GetLastError());
+ ret = SendNotifyMessageW(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
+ ok(ret == TRUE, "SendNotifyMessageW failed with error %u\n", GetLastError());
+ ret = SendMessageCallbackA(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef, NULL, 0);
+ ok(ret == TRUE, "SendMessageCallbackA failed with error %u\n", GetLastError());
+ ret = SendMessageCallbackW(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef, NULL, 0);
+ ok(ret == TRUE, "SendMessageCallbackW failed with error %u\n", GetLastError());
+ ret = PostMessageA(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
+ ok(ret == TRUE, "PostMessageA failed with error %u\n", GetLastError());
+ ret = PostMessageW(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
+ ok(ret == TRUE, "PostMessageW failed with error %u\n", GetLastError());
+ ret = PostThreadMessageA(GetCurrentThreadId(), WM_NOTIFY, 0x1234, 0xdeadbeef);
+ ok(ret == TRUE, "PostThreadMessageA failed with error %u\n", GetLastError());
+ ret = PostThreadMessageW(GetCurrentThreadId(), WM_NOTIFY, 0x1234, 0xdeadbeef);
+ ok(ret == TRUE, "PostThreadMessageW failed with error %u\n", GetLastError());
+
+ DestroyWindow(hwnd);
+}
+
static const struct message WmMouseHoverSeq[] = {
{ WM_MOUSEACTIVATE, sent|optional }, /* we can get those when moving the mouse in focus-follow-mouse mode under X11 */
{ WM_MOUSEACTIVATE, sent|optional },
@@ -15675,6 +15704,7 @@ START_TEST(msg)
test_SendMessageTimeout();
test_edit_messages();
test_quit_message();
+ test_notify_message();
test_SetActiveWindow();
if (!pTrackMouseEvent)
--
2.7.1

View File

@ -1 +0,0 @@
Fixes: [40244] Fix handling of WM_NOTIFY messages in PostThreadMessage