Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55306
-- v5: server: Use the capture window as cursor window if it is set. server: Update the desktop cursor position / window on click.
From: Rémi Bernon rbernon@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55306 --- server/queue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/queue.c b/server/queue.c index 0558bd111f9..8beacd4ec91 100644 --- a/server/queue.c +++ b/server/queue.c @@ -1679,9 +1679,9 @@ static void queue_hardware_message( struct desktop *desktop, struct message *msg break; case QS_MOUSEMOVE: prepend_cursor_history( msg->x, msg->y, msg->time, msg_data->info ); - if (update_desktop_cursor_pos( desktop, msg->win, msg->x, msg->y )) always_queue = 1; /* fallthrough */ case QS_MOUSEBUTTON: + if (update_desktop_cursor_pos( desktop, msg->win, msg->x, msg->y )) always_queue = 1; if (desktop->keystate[VK_LBUTTON] & 0x80) msg->wparam |= MK_LBUTTON; if (desktop->keystate[VK_MBUTTON] & 0x80) msg->wparam |= MK_MBUTTON; if (desktop->keystate[VK_RBUTTON] & 0x80) msg->wparam |= MK_RBUTTON;
From: Rémi Bernon rbernon@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55306 --- server/queue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/server/queue.c b/server/queue.c index 8beacd4ec91..3874dd295b1 100644 --- a/server/queue.c +++ b/server/queue.c @@ -455,6 +455,7 @@ static int update_desktop_cursor_window( struct desktop *desktop, user_handle_t static int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win, int x, int y ) { struct thread_input *input; + user_handle_t capture; int updated;
x = max( min( x, desktop->cursor.clip.right - 1 ), desktop->cursor.clip.left ); @@ -464,7 +465,7 @@ static int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win desktop->cursor.y = y; desktop->cursor.last_change = get_tick_count();
- if (!win && (input = desktop->foreground_input)) win = input->capture; + if ((input = desktop->foreground_input) && (capture = input->capture)) win = capture; if (!win || !is_window_visible( win ) || is_window_transparent( win )) win = shallow_window_from_point( desktop, x, y ); if (update_desktop_cursor_window( desktop, win )) updated = 1;
On Tue Dec 12 18:52:28 2023 +0000, Rémi Bernon wrote:
Oh right, I thought I did that.
Ah done :)