From 52c1d8568ad3fb6f4bf8e2e40b8c2a41e75a45a8 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Thu, 22 Feb 2018 10:02:49 -0600 Subject: [PATCH] user32-Mouse_Message_Hwnd: Rebase and re-enable. --- patches/patchinstall.sh | 29 +++++++++++++++++++ ...r-to-find-a-target-for-mouse-message.patch | 24 +++++++-------- ...-tests-for-clicking-through-layered-.patch | 21 +++++++------- ...-tests-for-window-region-of-layered-.patch | 25 ++++++++-------- patches/user32-Mouse_Message_Hwnd/definition | 1 - 5 files changed, 64 insertions(+), 36 deletions(-) diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 24a9047a..f6395a22 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -382,6 +382,7 @@ patch_enable_all () enable_user32_LR_LOADFROMFILE="$1" enable_user32_ListBox_Size="$1" enable_user32_MessageBox_WS_EX_TOPMOST="$1" + enable_user32_Mouse_Message_Hwnd="$1" enable_user32_PNG_Support="$1" enable_user32_Refresh_MDI_Menus="$1" enable_user32_ScrollWindowEx="$1" @@ -1392,6 +1393,9 @@ patch_enable () user32-MessageBox_WS_EX_TOPMOST) enable_user32_MessageBox_WS_EX_TOPMOST="$2" ;; + user32-Mouse_Message_Hwnd) + enable_user32_Mouse_Message_Hwnd="$2" + ;; user32-PNG_Support) enable_user32_PNG_Support="$2" ;; @@ -8172,6 +8176,31 @@ if test "$enable_user32_MessageBox_WS_EX_TOPMOST" -eq 1; then ) >> "$patchlist" fi +# Patchset user32-Mouse_Message_Hwnd +# | +# | This patchset fixes the following Wine bugs: +# | * [#22458] Fix issues with inserting symbols by clicking on center in Word 2007 & 2010 +# | * [#12007] Fix issues with dragging layers between images in Adobe Photoshop 7.0 +# | * [#9512] Make sure popups don't block access to objects underneath in DVDPro +# | +# | Modified files: +# | * dlls/user32/message.c, dlls/user32/tests/input.c, dlls/winex11.drv/bitblt.c, server/protocol.def, server/window.c +# | +if test "$enable_user32_Mouse_Message_Hwnd" -eq 1; then + patch_apply user32-Mouse_Message_Hwnd/0001-user32-Try-harder-to-find-a-target-for-mouse-message.patch + patch_apply user32-Mouse_Message_Hwnd/0002-user32-tests-Add-tests-for-clicking-through-layered-.patch + patch_apply user32-Mouse_Message_Hwnd/0003-user32-tests-Add-tests-for-window-region-of-layered-.patch + patch_apply user32-Mouse_Message_Hwnd/0004-user32-tests-Add-tests-for-DC-region.patch + patch_apply user32-Mouse_Message_Hwnd/0005-server-Add-support-for-a-layered-window-region.-v2.patch + ( + printf '%s\n' '+ { "Dmitry Timoshkov", "user32: Try harder to find a target for mouse messages.", 1 },'; + printf '%s\n' '+ { "Sebastian Lackner", "user32/tests: Add tests for clicking through layered window.", 1 },'; + printf '%s\n' '+ { "Sebastian Lackner", "user32/tests: Add tests for window region of layered windows.", 1 },'; + printf '%s\n' '+ { "Sebastian Lackner", "user32/tests: Add tests for DC region.", 1 },'; + printf '%s\n' '+ { "Dmitry Timoshkov", "server: Add support for a layered window region.", 3 },'; + ) >> "$patchlist" +fi + # Patchset user32-PNG_Support # | # | This patchset fixes the following Wine bugs: diff --git a/patches/user32-Mouse_Message_Hwnd/0001-user32-Try-harder-to-find-a-target-for-mouse-message.patch b/patches/user32-Mouse_Message_Hwnd/0001-user32-Try-harder-to-find-a-target-for-mouse-message.patch index c1253233..84844ca5 100644 --- a/patches/user32-Mouse_Message_Hwnd/0001-user32-Try-harder-to-find-a-target-for-mouse-message.patch +++ b/patches/user32-Mouse_Message_Hwnd/0001-user32-Try-harder-to-find-a-target-for-mouse-message.patch @@ -1,7 +1,7 @@ -From c13437712f404badbdbdc2352f0ffe0df8ad8265 Mon Sep 17 00:00:00 2001 +From 0bbae8697644dc706de5072b4b350690fcb0208c Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Tue, 25 Nov 2014 20:31:58 +0100 -Subject: user32: Try harder to find a target for mouse messages +Subject: [PATCH 1/5] user32: Try harder to find a target for mouse messages --- dlls/user32/message.c | 2 +- @@ -9,23 +9,23 @@ Subject: user32: Try harder to find a target for mouse messages 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/user32/message.c b/dlls/user32/message.c -index eac4e4d..da29dc6 100644 +index 6b7f918..5db3806 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c -@@ -2501,7 +2501,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H - } - else +@@ -2504,7 +2504,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H { + HWND orig = msg->hwnd; + - msg->hwnd = WINPOS_WindowFromPoint( msg->hwnd, msg->pt, &hittest ); + msg->hwnd = WINPOS_WindowFromPoint( 0, msg->pt, &hittest ); - } - - if (!msg->hwnd || !WIN_IsCurrentThread( msg->hwnd )) + if (!msg->hwnd) /* As a heuristic, try the next window if it's the owner of orig */ + { + HWND next = GetWindow( orig, GW_HWNDNEXT ); diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c -index 9b898d3..99ef777 100644 +index e52f7d2..437e70c 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c -@@ -1833,8 +1833,8 @@ static void test_Input_mouse(void) +@@ -2029,8 +2029,8 @@ static void test_Input_mouse(void) } } ok(hittest_no && hittest_no<50, "expected WM_NCHITTEST message\n"); @@ -37,5 +37,5 @@ index 9b898d3..99ef777 100644 /* click on HTTRANSPARENT top-level window that belongs to other thread */ -- -2.1.3 +2.7.4 diff --git a/patches/user32-Mouse_Message_Hwnd/0002-user32-tests-Add-tests-for-clicking-through-layered-.patch b/patches/user32-Mouse_Message_Hwnd/0002-user32-tests-Add-tests-for-clicking-through-layered-.patch index 9af523aa..8038b0c8 100644 --- a/patches/user32-Mouse_Message_Hwnd/0002-user32-tests-Add-tests-for-clicking-through-layered-.patch +++ b/patches/user32-Mouse_Message_Hwnd/0002-user32-tests-Add-tests-for-clicking-through-layered-.patch @@ -1,7 +1,8 @@ -From 9728ac1dc57f11b11d4467de7f1c58c59218978d Mon Sep 17 00:00:00 2001 +From 95c0fd89fcdd6517d0c8f6272ba41180bbda301c Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 29 May 2017 05:30:44 +0200 -Subject: user32/tests: Add tests for clicking through layered window. +Subject: [PATCH 2/5] user32/tests: Add tests for clicking through layered + window. FIXME: @@ -11,11 +12,11 @@ FIXME: * Add tests with WS_CHILD layered Windows. On Windows this is supported for >= Win8, but only when a manifest is present. --- - dlls/user32/tests/input.c | 157 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 157 insertions(+) + dlls/user32/tests/input.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 156 insertions(+) diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c -index 62cd5b38055..47c5fa8c932 100644 +index 437e70c..3a3e611 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -53,6 +53,7 @@ @@ -26,17 +27,15 @@ index 62cd5b38055..47c5fa8c932 100644 #include "winnls.h" #include "wine/test.h" -@@ -1927,7 +1928,9 @@ static void test_Input_mouse(void) +@@ -1926,6 +1927,7 @@ static void test_Input_mouse(void) struct thread_data thread_data; HANDLE thread; DWORD thread_id; + WNDCLASSA wclass; POINT pt, pt_org; -+ BOOL ret; MSG msg; - - GetCursorPos(&pt_org); -@@ -2131,6 +2134,160 @@ static void test_Input_mouse(void) + BOOL ret; +@@ -2140,6 +2142,160 @@ static void test_Input_mouse(void) ok(got_button_up, "expected WM_LBUTTONUP message\n"); DestroyWindow(hwnd); ok(ReleaseCapture(), "ReleaseCapture failed\n"); @@ -198,5 +197,5 @@ index 62cd5b38055..47c5fa8c932 100644 CloseHandle(thread_data.start_event); -- -2.12.2 +2.7.4 diff --git a/patches/user32-Mouse_Message_Hwnd/0003-user32-tests-Add-tests-for-window-region-of-layered-.patch b/patches/user32-Mouse_Message_Hwnd/0003-user32-tests-Add-tests-for-window-region-of-layered-.patch index ad420cbe..235478aa 100644 --- a/patches/user32-Mouse_Message_Hwnd/0003-user32-tests-Add-tests-for-window-region-of-layered-.patch +++ b/patches/user32-Mouse_Message_Hwnd/0003-user32-tests-Add-tests-for-window-region-of-layered-.patch @@ -1,14 +1,15 @@ -From c5c370cded7281e5b24545123e2ce5f310f651e5 Mon Sep 17 00:00:00 2001 +From 3c3d791ef1bd01769fd9b07ccc4df384ee9909aa Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 29 May 2017 06:04:18 +0200 -Subject: user32/tests: Add tests for window region of layered windows. +Subject: [PATCH 3/5] user32/tests: Add tests for window region of layered + windows. --- dlls/user32/tests/input.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c -index 47c5fa8c932..08c4c5435c6 100644 +index 3a3e611..39c4c83 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -80,6 +80,7 @@ static struct { @@ -27,17 +28,17 @@ index 47c5fa8c932..08c4c5435c6 100644 #undef GET_PROC } -@@ -1930,6 +1932,9 @@ static void test_Input_mouse(void) +@@ -1929,6 +1931,9 @@ static void test_Input_mouse(void) DWORD thread_id; WNDCLASSA wclass; POINT pt, pt_org; + int region_type; + HRGN hregion; + RECT region; - BOOL ret; MSG msg; + BOOL ret; -@@ -2159,6 +2164,12 @@ static void test_Input_mouse(void) +@@ -2167,6 +2172,12 @@ static void test_Input_mouse(void) while (wait_for_message(&msg)) DispatchMessageA(&msg); Sleep(100); @@ -50,7 +51,7 @@ index 47c5fa8c932..08c4c5435c6 100644 got_button_down = got_button_up = FALSE; simulate_click(TRUE, 150, 150); while (wait_for_message(&msg)) -@@ -2185,6 +2196,12 @@ static void test_Input_mouse(void) +@@ -2193,6 +2204,12 @@ static void test_Input_mouse(void) while (wait_for_message(&msg)) DispatchMessageA(&msg); Sleep(100); @@ -63,7 +64,7 @@ index 47c5fa8c932..08c4c5435c6 100644 got_button_down = got_button_up = FALSE; simulate_click(TRUE, 150, 150); while (wait_for_message(&msg)) -@@ -2213,6 +2230,12 @@ static void test_Input_mouse(void) +@@ -2221,6 +2238,12 @@ static void test_Input_mouse(void) while (wait_for_message(&msg)) DispatchMessageA(&msg); Sleep(100); @@ -76,7 +77,7 @@ index 47c5fa8c932..08c4c5435c6 100644 got_button_down = got_button_up = FALSE; simulate_click(TRUE, 150, 150); while (wait_for_message(&msg)) -@@ -2239,6 +2262,12 @@ static void test_Input_mouse(void) +@@ -2247,6 +2270,12 @@ static void test_Input_mouse(void) while (wait_for_message(&msg)) DispatchMessageA(&msg); Sleep(100); @@ -89,7 +90,7 @@ index 47c5fa8c932..08c4c5435c6 100644 got_button_down = got_button_up = FALSE; simulate_click(TRUE, 150, 150); while (wait_for_message(&msg)) -@@ -2266,6 +2295,12 @@ static void test_Input_mouse(void) +@@ -2274,6 +2303,12 @@ static void test_Input_mouse(void) while (wait_for_message(&msg)) DispatchMessageA(&msg); Sleep(100); @@ -102,7 +103,7 @@ index 47c5fa8c932..08c4c5435c6 100644 got_button_down = got_button_up = FALSE; simulate_click(TRUE, 150, 150); while (wait_for_message(&msg)) -@@ -2287,6 +2322,41 @@ static void test_Input_mouse(void) +@@ -2295,6 +2330,41 @@ static void test_Input_mouse(void) ok(got_button_down, "expected WM_LBUTTONDOWN message\n"); ok(got_button_up, "expected WM_LBUTTONUP message\n"); @@ -145,5 +146,5 @@ index 47c5fa8c932..08c4c5435c6 100644 SetCursorPos(pt_org.x, pt_org.y); -- -2.12.2 +2.7.4 diff --git a/patches/user32-Mouse_Message_Hwnd/definition b/patches/user32-Mouse_Message_Hwnd/definition index c4f3de71..b8c3370d 100644 --- a/patches/user32-Mouse_Message_Hwnd/definition +++ b/patches/user32-Mouse_Message_Hwnd/definition @@ -1,4 +1,3 @@ Fixes: [22458] Fix issues with inserting symbols by clicking on center in Word 2007 & 2010 Fixes: [12007] Fix issues with dragging layers between images in Adobe Photoshop 7.0 Fixes: [9512] Make sure popups don't block access to objects underneath in DVDPro -Disabled: true \ No newline at end of file