From: Rémi Bernon rbernon@codeweavers.com
--- server/queue.c | 2 +- server/user.h | 1 + server/window.c | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/server/queue.c b/server/queue.c index 770ed72ce43..e37afb4dc2d 100644 --- a/server/queue.c +++ b/server/queue.c @@ -403,7 +403,7 @@ static struct message *alloc_hardware_message( lparam_t info, struct hw_msg_sour return msg; }
-static int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win, int x, int y ) +int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win, int x, int y ) { struct thread_input *input; struct thread *thread; diff --git a/server/user.h b/server/user.h index 280da454d07..24533b64605 100644 --- a/server/user.h +++ b/server/user.h @@ -192,6 +192,7 @@ extern void set_process_default_desktop( struct process *process, struct desktop extern void close_process_desktop( struct process *process ); extern void set_thread_default_desktop( struct thread *thread, struct desktop *desktop, obj_handle_t handle ); extern void release_thread_desktop( struct thread *thread, int close ); +extern int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win, int x, int y );
/* checks if two rectangles are identical */ static inline int is_rect_equal( const rectangle_t *rect1, const rectangle_t *rect2 ) diff --git a/server/window.c b/server/window.c index f713ed224aa..6489b2bd764 100644 --- a/server/window.c +++ b/server/window.c @@ -2495,6 +2495,9 @@ DECL_HANDLER(set_window_pos) reply->surface_win = top->handle; reply->needs_update = !!(top->paint_flags & (PAINT_HAS_PIXEL_FORMAT | PAINT_PIXEL_FORMAT_CHILD)); } + + /* update the desktop cursor window from the cursor position */ + update_desktop_cursor_pos( win->desktop, 0, win->desktop->cursor.x, win->desktop->cursor.y ); }