user32-Mouse_Message_Hwnd: Rebase and re-enable.

This commit is contained in:
Zebediah Figura 2018-02-22 10:02:49 -06:00
parent 5bf41624ab
commit 52c1d8568a
5 changed files with 64 additions and 36 deletions

View File

@ -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:

View File

@ -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 <dmitry@codeweavers.com>
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

View File

@ -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 <sebastian@fds-team.de>
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

View File

@ -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 <sebastian@fds-team.de>
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

View File

@ -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