Commit 2581e0b3 authored by Rémi Bernon's avatar Rémi Bernon Committed by Alexandre Julliard

server: Send WM_WINE_SETCURSOR with the thread input cursor handle.

Which may be different from the last desktop cursor handle. This makes the behavior better match the old winex11 behavior, which queried the current thread input cursor handle on every mouse move to sync it with X11, although it contradicts MSDN documentation which states that the cursor handle is global. This fixes the X11 cursor being visible in "Deus Ex: GOTY Edition".
parent 70c9239c
...@@ -436,6 +436,15 @@ static int update_desktop_cursor_window( struct desktop *desktop, user_handle_t ...@@ -436,6 +436,15 @@ static int update_desktop_cursor_window( struct desktop *desktop, user_handle_t
desktop->cursor.win = win; desktop->cursor.win = win;
if (updated) if (updated)
{ {
struct thread *thread;
if ((thread = get_window_thread( win )))
{
struct thread_input *input = thread->queue->input;
if (input) handle = input->cursor_count < 0 ? 0 : input->cursor;
release_object( thread );
}
/* when clipping send the message to the foreground window as well, as some driver have an artificial overlay window */ /* when clipping send the message to the foreground window as well, as some driver have an artificial overlay window */
if (is_cursor_clipped( desktop )) queue_cursor_message( desktop, 0, WM_WINE_SETCURSOR, win, handle ); if (is_cursor_clipped( desktop )) queue_cursor_message( desktop, 0, WM_WINE_SETCURSOR, win, handle );
queue_cursor_message( desktop, win, WM_WINE_SETCURSOR, win, handle ); queue_cursor_message( desktop, win, WM_WINE_SETCURSOR, win, handle );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment