From b85017223fe55bffb73f4fd7c69c6f283db20582 Mon Sep 17 00:00:00 2001 From: Krzysztof Foltman Date: Fri, 18 Feb 2005 20:02:55 +0000 Subject: [PATCH] Ensure that caret position is not reset to (0, 0) when CreateCaret is called second time with the same window. --- server/queue.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/server/queue.c b/server/queue.c index e5a59793de4..b78ad3c8110 100644 --- a/server/queue.c +++ b/server/queue.c @@ -175,11 +175,14 @@ static struct thread_input *foreground_input; /* set the caret window in a given thread input */ static void set_caret_window( struct thread_input *input, user_handle_t win ) { + if (!win || win != input->caret) + { + input->caret_rect.left = 0; + input->caret_rect.top = 0; + input->caret_rect.right = 0; + input->caret_rect.bottom = 0; + } input->caret = win; - input->caret_rect.left = 0; - input->caret_rect.top = 0; - input->caret_rect.right = 0; - input->caret_rect.bottom = 0; input->caret_hide = 1; input->caret_state = 0; } @@ -1891,8 +1894,8 @@ DECL_HANDLER(set_caret_window) reply->old_state = input->caret_state; set_caret_window( input, get_user_full_handle(req->handle) ); - input->caret_rect.right = req->width; - input->caret_rect.bottom = req->height; + input->caret_rect.right = input->caret_rect.left + req->width; + input->caret_rect.bottom = input->caret_rect.top + req->height; } }