winex11.drv: Set correct cursor when setting cursor from another thread.

This commit is contained in:
Paul Gofman 2022-08-15 15:58:33 -05:00 committed by Alexandre Julliard
parent 39889f19c3
commit 6820842579
2 changed files with 16 additions and 4 deletions

View file

@ -1503,7 +1503,8 @@ void X11DRV_SetCursor( HCURSOR handle )
NtGetTickCount() - last_cursor_change > 100)
{
last_cursor_change = NtGetTickCount();
if (cursor_window) send_notify_message( cursor_window, WM_X11DRV_SET_CURSOR, 0, (LPARAM)handle );
if (cursor_window) send_notify_message( cursor_window, WM_X11DRV_SET_CURSOR,
GetCurrentThreadId(), (LPARAM)handle );
}
}

View file

@ -2996,15 +2996,26 @@ LRESULT X11DRV_WindowMessage( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
X11DRV_resize_desktop( (BOOL)lp );
return 0;
case WM_X11DRV_SET_CURSOR:
{
Window win = 0;
if ((data = get_win_data( hwnd )))
{
Window win = data->whole_window;
win = data->whole_window;
release_win_data( data );
if (win) set_window_cursor( win, (HCURSOR)lp );
}
else if (hwnd == x11drv_thread_data()->clip_hwnd)
set_window_cursor( x11drv_thread_data()->clip_window, (HCURSOR)lp );
win = x11drv_thread_data()->clip_window;
if (win)
{
if (wp == GetCurrentThreadId())
set_window_cursor( win, (HCURSOR)lp );
else
sync_window_cursor( win );
}
return 0;
}
case WM_X11DRV_CLIP_CURSOR_NOTIFY:
return clip_cursor_notify( hwnd, (HWND)wp, (HWND)lp );
case WM_X11DRV_CLIP_CURSOR_REQUEST: