server: Return the cursor information for a thread input, and use it for GetCursorInfo.
diff --git a/server/protocol.def b/server/protocol.def
index 5015e97..e4e8ec3 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -2604,6 +2604,8 @@
user_handle_t menu_owner; /* handle to the menu owner */
user_handle_t move_size; /* handle to the moving/resizing window */
user_handle_t caret; /* handle to the caret window */
+ user_handle_t cursor; /* handle to the cursor */
+ int show_count; /* cursor show count */
rectangle_t rect; /* caret rectangle */
@END
diff --git a/server/queue.c b/server/queue.c
index 4a06a73..d2090cd 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -2055,18 +2055,11 @@
reply->menu_owner = input->menu_owner;
reply->move_size = input->move_size;
reply->caret = input->caret;
+ reply->cursor = input->cursor;
+ reply->show_count = input->cursor_count;
reply->rect = input->caret_rect;
}
- else
- {
- reply->focus = 0;
- reply->capture = 0;
- reply->active = 0;
- reply->menu_owner = 0;
- reply->move_size = 0;
- reply->caret = 0;
- reply->rect.left = reply->rect.top = reply->rect.right = reply->rect.bottom = 0;
- }
+
/* foreground window is active window of foreground thread */
reply->foreground = foreground_input ? foreground_input->active : 0;
if (thread) release_object( thread );
diff --git a/server/request.h b/server/request.h
index 604d115..ef6adea 100644
--- a/server/request.h
+++ b/server/request.h
@@ -1712,8 +1712,10 @@
C_ASSERT( FIELD_OFFSET(struct get_thread_input_reply, menu_owner) == 24 );
C_ASSERT( FIELD_OFFSET(struct get_thread_input_reply, move_size) == 28 );
C_ASSERT( FIELD_OFFSET(struct get_thread_input_reply, caret) == 32 );
-C_ASSERT( FIELD_OFFSET(struct get_thread_input_reply, rect) == 36 );
-C_ASSERT( sizeof(struct get_thread_input_reply) == 56 );
+C_ASSERT( FIELD_OFFSET(struct get_thread_input_reply, cursor) == 36 );
+C_ASSERT( FIELD_OFFSET(struct get_thread_input_reply, show_count) == 40 );
+C_ASSERT( FIELD_OFFSET(struct get_thread_input_reply, rect) == 44 );
+C_ASSERT( sizeof(struct get_thread_input_reply) == 64 );
C_ASSERT( sizeof(struct get_last_input_time_request) == 16 );
C_ASSERT( FIELD_OFFSET(struct get_last_input_time_reply, time) == 8 );
C_ASSERT( sizeof(struct get_last_input_time_reply) == 16 );
diff --git a/server/trace.c b/server/trace.c
index c97bd70..ec87dab 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -3076,6 +3076,8 @@
fprintf( stderr, ", menu_owner=%08x", req->menu_owner );
fprintf( stderr, ", move_size=%08x", req->move_size );
fprintf( stderr, ", caret=%08x", req->caret );
+ fprintf( stderr, ", cursor=%08x", req->cursor );
+ fprintf( stderr, ", show_count=%d", req->show_count );
dump_rectangle( ", rect=", &req->rect );
}