diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 98bc1016747..6fdae05fea7 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -4801,11 +4801,13 @@ struct set_cursor_reply struct reply_header __header; user_handle_t prev_handle; int prev_count; + int prev_x; + int prev_y; int new_x; int new_y; rectangle_t new_clip; unsigned int last_change; - char __pad_44[4]; + char __pad_52[4]; }; #define SET_CURSOR_HANDLE 0x01 #define SET_CURSOR_COUNT 0x02 @@ -5558,6 +5560,6 @@ union generic_reply struct set_cursor_reply set_cursor_reply; }; -#define SERVER_PROTOCOL_VERSION 421 +#define SERVER_PROTOCOL_VERSION 422 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/protocol.def b/server/protocol.def index 7e0f0c8613f..6984bc51656 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -3317,6 +3317,8 @@ enum coords_relative @REPLY user_handle_t prev_handle; /* previous handle */ int prev_count; /* previous show count */ + int prev_x; /* previous position */ + int prev_y; int new_x; /* new position */ int new_y; rectangle_t new_clip; /* new clip rectangle */ diff --git a/server/queue.c b/server/queue.c index b9b42e4a8ff..91fe1fca2ea 100644 --- a/server/queue.c +++ b/server/queue.c @@ -2650,6 +2650,8 @@ DECL_HANDLER(set_cursor) reply->prev_handle = input->cursor; reply->prev_count = input->cursor_count; + reply->prev_x = input->desktop->cursor.x; + reply->prev_y = input->desktop->cursor.y; if (req->flags & SET_CURSOR_HANDLE) { diff --git a/server/request.h b/server/request.h index acf886fbb2c..b08033ede24 100644 --- a/server/request.h +++ b/server/request.h @@ -2101,11 +2101,13 @@ C_ASSERT( FIELD_OFFSET(struct set_cursor_request, clip_msg) == 48 ); C_ASSERT( sizeof(struct set_cursor_request) == 56 ); C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, prev_handle) == 8 ); C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, prev_count) == 12 ); -C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, new_x) == 16 ); -C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, new_y) == 20 ); -C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, new_clip) == 24 ); -C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, last_change) == 40 ); -C_ASSERT( sizeof(struct set_cursor_reply) == 48 ); +C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, prev_x) == 16 ); +C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, prev_y) == 20 ); +C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, new_x) == 24 ); +C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, new_y) == 28 ); +C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, new_clip) == 32 ); +C_ASSERT( FIELD_OFFSET(struct set_cursor_reply, last_change) == 48 ); +C_ASSERT( sizeof(struct set_cursor_reply) == 56 ); #endif /* WANT_REQUEST_HANDLERS */ diff --git a/server/trace.c b/server/trace.c index 2d2d82bda4b..a296341b9de 100644 --- a/server/trace.c +++ b/server/trace.c @@ -3854,6 +3854,8 @@ static void dump_set_cursor_reply( const struct set_cursor_reply *req ) { fprintf( stderr, " prev_handle=%08x", req->prev_handle ); fprintf( stderr, ", prev_count=%d", req->prev_count ); + fprintf( stderr, ", prev_x=%d", req->prev_x ); + fprintf( stderr, ", prev_y=%d", req->prev_y ); fprintf( stderr, ", new_x=%d", req->new_x ); fprintf( stderr, ", new_y=%d", req->new_y ); dump_rectangle( ", new_clip=", &req->new_clip );