From 62db3313d59a58a6c9ca624b9da4bd1399706cb5 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 18 Mar 2022 11:29:35 +1100 Subject: [PATCH] Rebase against 083dea7fce4372840ac18176496a7d05dadd5ad8. --- patches/patchinstall.sh | 9 ++-- ...itialize-dialog-info-for-every-windo.patch | 18 +++---- ...dialog-for-DM_SETDEFID-DM_GETDEFID-i.patch | 9 ++-- ...-a-bunch-of-tests-for-DM_SETDEFID-DM.patch | 26 +++++----- ...teWindow-during-DIALOG_CreateIndirec.patch | 12 ++--- ...0001-user32-Implement-CascadeWindows.patch | 2 +- .../0002-user32-Implement-TileWindows.patch | 2 +- ...ges-sent-on-a-window-without-WS_CHIL.patch | 39 +++++++-------- ...vent-a-recursive-loop-with-the-activ.patch | 47 ++++++------------- staging/upstream-commit | 2 +- 10 files changed, 72 insertions(+), 94 deletions(-) diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 889f4fea..c7573684 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "62df608d3ed84aac7ce517fd07ea13e48b49b08c" + echo "083dea7fce4372840ac18176496a7d05dadd5ad8" } # Show version information @@ -3291,7 +3291,7 @@ fi # | * [#40262] Correct order of windows messages. # | # | Modified files: -# | * dlls/user32/tests/msg.c, dlls/user32/winpos.c, dlls/win32u/window.c +# | * dlls/user32/tests/msg.c, dlls/win32u/window.c # | if test "$enable_user32_message_order" -eq 1; then patch_apply user32-message-order/0001-user32-Fix-messages-sent-on-a-window-without-WS_CHIL.patch @@ -3591,8 +3591,9 @@ fi # | * [#44514] - wined3d: Use bindless textures for GLSL shaders. # | # | Modified files: -# | * dlls/wined3d/adapter_gl.c, dlls/wined3d/context_gl.c, dlls/wined3d/device.c, dlls/wined3d/glsl_shader.c, -# | dlls/wined3d/texture.c, dlls/wined3d/view.c, dlls/wined3d/wined3d_gl.h, dlls/wined3d/wined3d_private.h +# | * dlls/wined3d/adapter_gl.c, dlls/wined3d/arb_program_shader.c, dlls/wined3d/context_gl.c, dlls/wined3d/device.c, +# | dlls/wined3d/glsl_shader.c, dlls/wined3d/shader.c, dlls/wined3d/texture.c, dlls/wined3d/view.c, +# | dlls/wined3d/wined3d_gl.h, dlls/wined3d/wined3d_private.h # | if test "$enable_wined3d_bindless_texture" -eq 1; then patch_apply wined3d-bindless-texture/0001-wined3d-Use-bindless-textures-for-GLSL-shaders.patch diff --git a/patches/user32-DM_SETDEFID/0001-user32-Do-not-initialize-dialog-info-for-every-windo.patch b/patches/user32-DM_SETDEFID/0001-user32-Do-not-initialize-dialog-info-for-every-windo.patch index 8f97fe07..aa1c9b70 100644 --- a/patches/user32-DM_SETDEFID/0001-user32-Do-not-initialize-dialog-info-for-every-windo.patch +++ b/patches/user32-DM_SETDEFID/0001-user32-Do-not-initialize-dialog-info-for-every-windo.patch @@ -1,8 +1,8 @@ -From c40265799ed2dd422b06cce9560b7b855304cbf1 Mon Sep 17 00:00:00 2001 +From f5f76efccaf16896cfaf455c3f8e5383675a5b79 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 15 Jun 2016 14:57:10 +0800 -Subject: user32: Do not initialize dialog info for every window passed to - DefDlgProc. +Subject: [PATCH] user32: Do not initialize dialog info for every window passed + to DefDlgProc. The tests in the last patch in the series use DefDlgProcA(parent, DM_GETDEFID, 0, 0); @@ -18,10 +18,10 @@ has been forced, so passing TRUE to DIALOG_get_info() is redundant there. 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/user32/defdlg.c b/dlls/user32/defdlg.c -index 00a73c6..258c3a9 100644 +index 3c7a8a78855..b7d30a7f1cf 100644 --- a/dlls/user32/defdlg.c +++ b/dlls/user32/defdlg.c -@@ -364,7 +364,7 @@ LRESULT WINAPI DefDlgProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) +@@ -361,7 +361,7 @@ static LRESULT USER_DefDlgProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar LRESULT result = 0; /* Perform DIALOGINFO initialization if not done */ @@ -30,7 +30,7 @@ index 00a73c6..258c3a9 100644 SetWindowLongPtrW( hwnd, DWLP_MSGRESULT, 0 ); -@@ -422,7 +422,7 @@ LRESULT WINAPI DefDlgProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) +@@ -415,7 +415,7 @@ static LRESULT USER_DefDlgProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar LRESULT result = 0; /* Perform DIALOGINFO initialization if not done */ @@ -40,10 +40,10 @@ index 00a73c6..258c3a9 100644 SetWindowLongPtrW( hwnd, DWLP_MSGRESULT, 0 ); diff --git a/dlls/user32/dialog.c b/dlls/user32/dialog.c -index 9cb4b8d..b84784f 100644 +index a3efd5b6742..a226c764c49 100644 --- a/dlls/user32/dialog.c +++ b/dlls/user32/dialog.c -@@ -216,7 +216,7 @@ static const WORD *DIALOG_GetControl32( const WORD *p, DLG_CONTROL_INFO *info, +@@ -212,7 +212,7 @@ static const WORD *DIALOG_GetControl32( const WORD *p, DLG_CONTROL_INFO *info, static BOOL DIALOG_CreateControls32( HWND hwnd, LPCSTR template, const DLG_TEMPLATE *dlgTemplate, HINSTANCE hInst, BOOL unicode ) { @@ -53,5 +53,5 @@ index 9cb4b8d..b84784f 100644 HWND hwndCtrl, hwndDefButton = 0; INT items = dlgTemplate->nbItems; -- -2.8.0 +2.35.1 diff --git a/patches/user32-DM_SETDEFID/0002-user32-Use-root-dialog-for-DM_SETDEFID-DM_GETDEFID-i.patch b/patches/user32-DM_SETDEFID/0002-user32-Use-root-dialog-for-DM_SETDEFID-DM_GETDEFID-i.patch index f7f78ef1..63679f5b 100644 --- a/patches/user32-DM_SETDEFID/0002-user32-Use-root-dialog-for-DM_SETDEFID-DM_GETDEFID-i.patch +++ b/patches/user32-DM_SETDEFID/0002-user32-Use-root-dialog-for-DM_SETDEFID-DM_GETDEFID-i.patch @@ -1,7 +1,8 @@ -From d068cb5331e7dee5ceb0c14a3eff9ef2c273865d Mon Sep 17 00:00:00 2001 +From f612886526cf2a07f02794c2d41e6284e39d251d Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 15 Jun 2016 15:07:39 +0800 -Subject: user32: Use root dialog for DM_SETDEFID/DM_GETDEFID in DefDlgProc. +Subject: [PATCH] user32: Use root dialog for DM_SETDEFID/DM_GETDEFID in + DefDlgProc. This patch fixes DM_SETDEFID/DM_GETDEFID handling in complex dialog structures such as a property sheet. @@ -10,7 +11,7 @@ structures such as a property sheet. 1 file changed, 25 insertions(+) diff --git a/dlls/user32/defdlg.c b/dlls/user32/defdlg.c -index 258c3a9..6765a51 100644 +index b7d30a7f1cf..5b7f59cd3c7 100644 --- a/dlls/user32/defdlg.c +++ b/dlls/user32/defdlg.c @@ -209,6 +209,25 @@ static BOOL DEFDLG_SetDefButton( HWND hwndDlg, DIALOGINFO *dlgInfo, HWND hwndNew @@ -58,5 +59,5 @@ index 258c3a9..6765a51 100644 { HWND hwndDefId; -- -2.8.0 +2.35.1 diff --git a/patches/user32-DM_SETDEFID/0003-user32-tests-Add-a-bunch-of-tests-for-DM_SETDEFID-DM.patch b/patches/user32-DM_SETDEFID/0003-user32-tests-Add-a-bunch-of-tests-for-DM_SETDEFID-DM.patch index 4233ba02..69d0c69f 100644 --- a/patches/user32-DM_SETDEFID/0003-user32-tests-Add-a-bunch-of-tests-for-DM_SETDEFID-DM.patch +++ b/patches/user32-DM_SETDEFID/0003-user32-tests-Add-a-bunch-of-tests-for-DM_SETDEFID-DM.patch @@ -1,18 +1,18 @@ -From 44670a4e2f5d3434d8546ed32724b58a24b4399e Mon Sep 17 00:00:00 2001 +From 71f0da0e3f84845fc5e5352b9279de0cd30a717d Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 15 Jun 2016 15:09:46 +0800 -Subject: user32/tests: Add a bunch of tests for DM_SETDEFID/DM_GETDEFID - handling by a DefDlgProc. +Subject: [PATCH] user32/tests: Add a bunch of tests for + DM_SETDEFID/DM_GETDEFID handling by a DefDlgProc. --- - dlls/user32/tests/win.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ + dlls/user32/tests/win.c | 87 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c -index c135fdf..23e98e0 100644 +index 49bbd5894a9..3458f812394 100644 --- a/dlls/user32/tests/win.c +++ b/dlls/user32/tests/win.c -@@ -4228,15 +4228,65 @@ static void test_window_styles(void) +@@ -5157,15 +5157,65 @@ static void test_window_styles(void) } } @@ -78,7 +78,7 @@ index c135fdf..23e98e0 100644 return 0; } -@@ -4255,6 +4305,16 @@ static INT_PTR WINAPI empty_dlg_proc2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM +@@ -5184,6 +5234,16 @@ static INT_PTR WINAPI empty_dlg_proc2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM struct dialog_param *param = (struct dialog_param *)lparam; BOOL parent_is_child; HWND disabled_hwnd; @@ -95,9 +95,9 @@ index c135fdf..23e98e0 100644 parent_is_child = (GetWindowLongA(param->parent, GWL_STYLE) & (WS_POPUP | WS_CHILD)) == WS_CHILD; -@@ -4296,6 +4356,25 @@ static INT_PTR WINAPI empty_dlg_proc2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM +@@ -5225,6 +5285,25 @@ static INT_PTR WINAPI empty_dlg_proc2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM DialogBoxIndirectParamA(GetModuleHandleA(NULL), param->dlg_data, hwnd, empty_dlg_proc3, 0); - ok(IsWindowEnabled(hwnd), "wrong state for %p (%08x)\n", hwnd, style); + ok(IsWindowEnabled(hwnd), "wrong state for %p (%08lx)\n", hwnd, style); + param->dlg_data->style |= DS_CONTROL; + DialogBoxIndirectParamA(GetModuleHandleA(NULL), param->dlg_data, hwnd, empty_dlg_proc3, 0); @@ -121,7 +121,7 @@ index c135fdf..23e98e0 100644 EndDialog(hwnd, 0); } return 0; -@@ -4314,6 +4393,7 @@ static void check_dialog_style(DWORD style_in, DWORD ex_style_in, DWORD style_ou +@@ -5243,6 +5322,7 @@ static void check_dialog_style(DWORD style_in, DWORD ex_style_in, DWORD style_ou DWORD style, ex_style; HWND hwnd, grand_parent = 0, parent = 0; struct dialog_param param; @@ -129,9 +129,9 @@ index c135fdf..23e98e0 100644 if (style_in & WS_CHILD) { -@@ -4341,6 +4421,13 @@ static void check_dialog_style(DWORD style_in, DWORD ex_style_in, DWORD style_ou +@@ -5270,6 +5350,13 @@ static void check_dialog_style(DWORD style_in, DWORD ex_style_in, DWORD style_ou hwnd = CreateDialogIndirectParamA(GetModuleHandleA(NULL), &dlg_data.dt, parent, empty_dlg_proc, 0); - ok(hwnd != 0, "dialog creation failed, style %#x, exstyle %#x\n", style_in, ex_style_in); + ok(hwnd != 0, "dialog creation failed, style %#lx, exstyle %#lx\n", style_in, ex_style_in); + id = DefDlgProcA(hwnd, DM_GETDEFID, 0, 0); + ok(id == MAKELONG(IDOK,DC_HASDEFID), "expected (IDOK,DC_HASDEFID), got %08lx\n", id); @@ -144,5 +144,5 @@ index c135fdf..23e98e0 100644 style = GetWindowLongA(hwnd, GWL_STYLE); -- -2.8.0 +2.35.1 diff --git a/patches/user32-Dialog_Paint_Event/0001-user32-Call-UpdateWindow-during-DIALOG_CreateIndirec.patch b/patches/user32-Dialog_Paint_Event/0001-user32-Call-UpdateWindow-during-DIALOG_CreateIndirec.patch index e3e8eadc..0b2ecde7 100644 --- a/patches/user32-Dialog_Paint_Event/0001-user32-Call-UpdateWindow-during-DIALOG_CreateIndirec.patch +++ b/patches/user32-Dialog_Paint_Event/0001-user32-Call-UpdateWindow-during-DIALOG_CreateIndirec.patch @@ -1,24 +1,24 @@ -From 3d286a43424fc20c3a8ccdfbbbf7ce84a2bb4300 Mon Sep 17 00:00:00 2001 +From 3407a396a86366b81b243fde01e191aa1a2f7f5a Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 26 Sep 2014 20:24:50 +0200 -Subject: user32: Call UpdateWindow() during DIALOG_CreateIndirect. +Subject: [PATCH] user32: Call UpdateWindow() during DIALOG_CreateIndirect. --- dlls/user32/dialog.c | 1 + 1 file changed, 1 insertion(+) diff --git a/dlls/user32/dialog.c b/dlls/user32/dialog.c -index 497d545..819af7a 100644 +index a226c764c49..91ce53f8297 100644 --- a/dlls/user32/dialog.c +++ b/dlls/user32/dialog.c -@@ -714,6 +714,7 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate, +@@ -703,6 +703,7 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate, if (template.style & WS_VISIBLE && !(GetWindowLongW( hwnd, GWL_STYLE ) & WS_VISIBLE)) { - ShowWindow( hwnd, SW_SHOWNORMAL ); /* SW_SHOW doesn't always work */ + NtUserShowWindow( hwnd, SW_SHOWNORMAL ); /* SW_SHOW doesn't always work */ + UpdateWindow( hwnd ); } return hwnd; } -- -2.1.1 +2.35.1 diff --git a/patches/user32-Implement-CascadeWindows/0001-user32-Implement-CascadeWindows.patch b/patches/user32-Implement-CascadeWindows/0001-user32-Implement-CascadeWindows.patch index f9269ef2..fdeea610 100644 --- a/patches/user32-Implement-CascadeWindows/0001-user32-Implement-CascadeWindows.patch +++ b/patches/user32-Implement-CascadeWindows/0001-user32-Implement-CascadeWindows.patch @@ -197,7 +197,7 @@ index 10a3882..2e93056 100644 + continue; + + if (IsZoomed(hwnd)) -+ ShowWindow(hwnd, SW_RESTORE | SW_SHOWNA); ++ NtUserShowWindow(hwnd, SW_RESTORE | SW_SHOWNA); + + GetWindowRect(hwnd, &wnd_rect); + new_width = width = wnd_rect.right - wnd_rect.left; diff --git a/patches/user32-Implement-CascadeWindows/0002-user32-Implement-TileWindows.patch b/patches/user32-Implement-CascadeWindows/0002-user32-Implement-TileWindows.patch index f6cf1492..c1f5704b 100644 --- a/patches/user32-Implement-CascadeWindows/0002-user32-Implement-TileWindows.patch +++ b/patches/user32-Implement-CascadeWindows/0002-user32-Implement-TileWindows.patch @@ -149,7 +149,7 @@ index 9679be895ed..c752f967b4d 100644 + hwnd = info.wnd_array[i]; + + if (IsZoomed(hwnd)) -+ ShowWindow(hwnd, SW_RESTORE | SW_SHOWNA); ++ NtUserShowWindow(hwnd, SW_RESTORE | SW_SHOWNA); + + GetWindowRect(hwnd, &rcWnd); + cx = rcWnd.right - rcWnd.left; diff --git a/patches/user32-message-order/0001-user32-Fix-messages-sent-on-a-window-without-WS_CHIL.patch b/patches/user32-message-order/0001-user32-Fix-messages-sent-on-a-window-without-WS_CHIL.patch index fbff8f1b..1917edb4 100644 --- a/patches/user32-message-order/0001-user32-Fix-messages-sent-on-a-window-without-WS_CHIL.patch +++ b/patches/user32-message-order/0001-user32-Fix-messages-sent-on-a-window-without-WS_CHIL.patch @@ -1,4 +1,4 @@ -From d0087c1c1d68b0bda581ca9a394d8b980dd7a430 Mon Sep 17 00:00:00 2001 +From 8480b74b27a589db418493a787af4c98e05e29b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= Date: Wed, 16 Sep 2020 17:35:09 +0300 Subject: [PATCH] user32: Fix messages sent on a window without WS_CHILD, but @@ -17,10 +17,9 @@ This also fixes a TODO message sequence, so that Wine matches Windows. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40262 Signed-off-by: Gabriel Ivăncescu --- - dlls/user32/tests/msg.c | 3 ++- - dlls/user32/winpos.c | 4 ++-- - dlls/win32u/window.c | 7 +++++-- - 3 files changed, 9 insertions(+), 5 deletions(-) + dlls/user32/tests/msg.c | 3 ++- + dlls/win32u/window.c | 11 +++++++---- + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 4e2d39dff10..f28b1151c4d 100644 @@ -43,26 +42,11 @@ index 4e2d39dff10..f28b1151c4d 100644 ok(GetWindowLongA(popup, GWL_STYLE) & WS_VISIBLE, "WS_VISIBLE should be set\n"); ok(!IsWindowVisible(popup), "IsWindowVisible() should return FALSE\n"); -diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c -index b3e8aff3cfa..eaa965fdbee 100644 ---- a/dlls/user32/winpos.c -+++ b/dlls/user32/winpos.c -@@ -983,8 +983,8 @@ static BOOL show_window( HWND hwnd, INT cmd ) - } - swp = new_swp; - -- parent = NtUserGetAncestor( hwnd, GA_PARENT ); -- if (parent && !IsWindowVisible( parent ) && !(swp & SWP_STATECHANGED)) -+ if ((style & WS_CHILD) && (parent = NtUserGetAncestor( hwnd, GA_PARENT )) && -+ !IsWindowVisible( parent ) && !(swp & SWP_STATECHANGED)) - { - /* if parent is not visible simply toggle WS_VISIBLE and return */ - if (showFlag) WIN_SetStyle( hwnd, WS_VISIBLE, 0 ); diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c -index c9801ff8870..71b75445efa 100644 +index 96a1606c5a1..10f43b9b32f 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c -@@ -2315,8 +2315,11 @@ static BOOL fixup_swp_flags( WINDOWPOS *winpos, const RECT *old_window_rect, int +@@ -2699,8 +2699,11 @@ static BOOL fixup_swp_flags( WINDOWPOS *winpos, const RECT *old_window_rect, int if (winpos->cy < 0) winpos->cy = 0; else if (winpos->cy > 32767) winpos->cy = 32767; @@ -76,6 +60,17 @@ index c9801ff8870..71b75445efa 100644 if (win->dwStyle & WS_VISIBLE) winpos->flags &= ~SWP_SHOWWINDOW; else +@@ -3735,8 +3738,8 @@ static BOOL show_window( HWND hwnd, INT cmd ) + } + swp = new_swp; + +- parent = NtUserGetAncestor( hwnd, GA_PARENT ); +- if (parent && !is_window_visible( parent ) && !(swp & SWP_STATECHANGED)) ++ if ((style & WS_CHILD) && (parent = NtUserGetAncestor( hwnd, GA_PARENT )) && ++ !is_window_visible( parent ) && !(swp & SWP_STATECHANGED)) + { + /* if parent is not visible simply toggle WS_VISIBLE and return */ + if (show_flag) set_window_style( hwnd, WS_VISIBLE, 0 ); -- 2.35.1 diff --git a/patches/user32-recursive-activation/0001-user32-focus-Prevent-a-recursive-loop-with-the-activ.patch b/patches/user32-recursive-activation/0001-user32-focus-Prevent-a-recursive-loop-with-the-activ.patch index aafec4a9..458a8ed6 100644 --- a/patches/user32-recursive-activation/0001-user32-focus-Prevent-a-recursive-loop-with-the-activ.patch +++ b/patches/user32-recursive-activation/0001-user32-focus-Prevent-a-recursive-loop-with-the-activ.patch @@ -1,4 +1,4 @@ -From f0e7e4d7995867911e47dc54c9087cd7a57b5c90 Mon Sep 17 00:00:00 2001 +From 313d448f0e96df2c0b7b68bce8a6c7a2afed4c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= Date: Mon, 22 Jul 2019 15:29:25 +0300 Subject: [PATCH] user32/focus: Prevent a recursive loop with the activation @@ -17,12 +17,12 @@ Signed-off-by: Gabriel Ivăncescu --- dlls/user32/focus.c | 1 - dlls/user32/tests/msg.c | 2 +- - dlls/win32u/input.c | 52 +++++++++++++++++++++++++++--------- + dlls/win32u/input.c | 40 ++++++++++++++++++++++++------------ dlls/win32u/ntuser_private.h | 1 + - 4 files changed, 41 insertions(+), 15 deletions(-) + 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c -index 4998ac2feb6..f68c6080698 100644 +index ff41cf716a1..a044133ab40 100644 --- a/dlls/user32/focus.c +++ b/dlls/user32/focus.c @@ -31,7 +31,6 @@ @@ -34,10 +34,10 @@ index 4998ac2feb6..f68c6080698 100644 * FOCUS_MouseActivate * diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c -index 9164f57fdc2..01cb214acdf 100644 +index f28b1151c4d..4dad60d3ad6 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c -@@ -5571,7 +5571,7 @@ static void test_messages(void) +@@ -5572,7 +5572,7 @@ static void test_messages(void) ShowWindow(hwnd, SW_MINIMIZE); flush_events(); @@ -47,29 +47,10 @@ index 9164f57fdc2..01cb214acdf 100644 if (GetWindowLongW( hwnd, GWL_STYLE ) & WS_MINIMIZE) diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c -index fff732097ba..cbc6cfd6b0d 100644 +index 08eded198a3..9ed6dc01a1e 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c -@@ -1180,6 +1180,18 @@ static HWND set_focus_window( HWND hwnd ) - return previous; - } - -+static UINT win_set_flags( HWND hwnd, UINT set_mask, UINT clear_mask ) -+{ -+ UINT ret; -+ WND *ptr = get_win_ptr( hwnd ); -+ -+ if (!ptr || ptr == WND_OTHER_PROCESS || ptr == WND_DESKTOP) return 0; -+ ret = ptr->flags; -+ ptr->flags = (ret & ~clear_mask) | set_mask; -+ release_win_ptr( ptr ); -+ return ret; -+} -+ - /******************************************************************* - * set_active_window - */ -@@ -1187,7 +1199,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) +@@ -1187,7 +1187,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) { HWND previous = get_active_window(); BOOL ret; @@ -78,7 +59,7 @@ index fff732097ba..cbc6cfd6b0d 100644 CBTACTIVATESTRUCT cbt; if (previous == hwnd) -@@ -1196,16 +1208,24 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) +@@ -1196,16 +1196,24 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) return TRUE; } @@ -112,7 +93,7 @@ index fff732097ba..cbc6cfd6b0d 100644 } SERVER_START_REQ( set_active_window ) -@@ -1225,7 +1245,11 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) +@@ -1225,7 +1233,11 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) if (send_message( hwnd, WM_QUERYNEWPALETTE, 0, 0 ) && user_callbacks) user_callbacks->pSendMessageTimeoutW( HWND_BROADCAST, WM_PALETTEISCHANGING, (WPARAM)hwnd, 0, SMTO_ABORTIFHUNG, 2000, NULL ); @@ -125,7 +106,7 @@ index fff732097ba..cbc6cfd6b0d 100644 } old_thread = previous ? get_window_thread( previous, NULL ) : 0; -@@ -1257,7 +1281,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) +@@ -1257,7 +1269,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) } } @@ -134,7 +115,7 @@ index fff732097ba..cbc6cfd6b0d 100644 { send_message( hwnd, WM_NCACTIVATE, hwnd == NtUserGetForegroundWindow(), (LPARAM)previous ); send_message( hwnd, WM_ACTIVATE, -@@ -1282,7 +1306,9 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) +@@ -1282,7 +1294,9 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) } } @@ -146,10 +127,10 @@ index fff732097ba..cbc6cfd6b0d 100644 /********************************************************************** diff --git a/dlls/win32u/ntuser_private.h b/dlls/win32u/ntuser_private.h -index 6c10a3e77e1..b46f0426368 100644 +index 49fd22ca140..3b77f37e9f2 100644 --- a/dlls/win32u/ntuser_private.h +++ b/dlls/win32u/ntuser_private.h -@@ -109,6 +109,7 @@ typedef struct tagWND +@@ -119,6 +119,7 @@ typedef struct tagWND #define WIN_NEEDS_SHOW_OWNEDPOPUP 0x0020 /* WM_SHOWWINDOW:SC_SHOW must be sent in the next ShowOwnedPopup call */ #define WIN_CHILDREN_MOVED 0x0040 /* children may have moved, ignore stored positions */ #define WIN_HAS_IME_WIN 0x0080 /* the window has been registered with imm32 */ diff --git a/staging/upstream-commit b/staging/upstream-commit index 8a1ec28e..1edf61c9 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -62df608d3ed84aac7ce517fd07ea13e48b49b08c +083dea7fce4372840ac18176496a7d05dadd5ad8