[PATCH] winex11: Forward all clipping requests to the right thread.
Józef Kucia
jkucia at codeweavers.com
Mon Mar 18 07:39:57 CDT 2019
From: Sebastian Lackner <sebastian at fds-team.de>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=38087
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
dlls/winex11.drv/mouse.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
index d6787068a965..f737a306a562 100644
--- a/dlls/winex11.drv/mouse.c
+++ b/dlls/winex11.drv/mouse.c
@@ -464,6 +464,8 @@ void reset_clipping_window(void)
ClipCursor( NULL ); /* make sure the clip rectangle is reset too */
}
+BOOL CDECL X11DRV_ClipCursor( const RECT *clip );
+
/***********************************************************************
* clip_cursor_notify
*
@@ -492,12 +494,10 @@ LRESULT clip_cursor_notify( HWND hwnd, HWND new_clip_hwnd )
}
else if (hwnd == GetForegroundWindow()) /* request to clip */
{
- RECT clip, virtual_rect = get_virtual_screen_rect();
+ RECT clip;
GetClipCursor( &clip );
- if (clip.left > virtual_rect.left || clip.right < virtual_rect.right ||
- clip.top > virtual_rect.top || clip.bottom < virtual_rect.bottom)
- return grab_clipping_window( &clip );
+ X11DRV_ClipCursor( &clip );
}
return 0;
}
@@ -1471,22 +1471,22 @@ BOOL CDECL X11DRV_ClipCursor( LPCRECT clip )
if (grab_pointer)
{
HWND foreground = GetForegroundWindow();
+ DWORD tid, pid;
+
+ /* forward request to the foreground window if it's in a different thread */
+ tid = GetWindowThreadProcessId( foreground, &pid );
+ if (tid && tid != GetCurrentThreadId() && pid == GetCurrentProcessId())
+ {
+ TRACE( "forwarding clip request to %p\n", foreground );
+ SendNotifyMessageW( foreground, WM_X11DRV_CLIP_CURSOR, 0, 0 );
+ return TRUE;
+ }
/* we are clipping if the clip rectangle is smaller than the screen */
if (clip->left > virtual_rect.left || clip->right < virtual_rect.right ||
clip->top > virtual_rect.top || clip->bottom < virtual_rect.bottom)
{
- DWORD tid, pid;
-
- /* forward request to the foreground window if it's in a different thread */
- tid = GetWindowThreadProcessId( foreground, &pid );
- if (tid && tid != GetCurrentThreadId() && pid == GetCurrentProcessId())
- {
- TRACE( "forwarding clip request to %p\n", foreground );
- SendNotifyMessageW( foreground, WM_X11DRV_CLIP_CURSOR, 0, 0 );
- return TRUE;
- }
- else if (grab_clipping_window( clip )) return TRUE;
+ if (grab_clipping_window( clip )) return TRUE;
}
else /* if currently clipping, check if we should switch to fullscreen clipping */
{
--
2.19.2
More information about the wine-devel
mailing list