CreateCaret patch
Krzysztof Foltman
kfoltman at portal.onet.pl
Wed Feb 16 07:03:32 CST 2005
This patch ensures that caret position is not reset to (0, 0) when
CreateCaret is called second time with the same window. For further
details, see my mail on wine-devel.
Krzysztof
-------------- next part --------------
? createcaret.diff
? dlls/mpr/version.res
? dlls/ole32/version.res
? dlls/oleaut32/version.res
? dlls/shdocvw/version.res
? dlls/shell32/version.res
Index: server/queue.c
===================================================================
RCS file: /home/wine/wine/server/queue.c,v
retrieving revision 1.47
diff -u -r1.47 queue.c
--- server/queue.c 3 Feb 2005 16:40:20 -0000 1.47
+++ server/queue.c 16 Feb 2005 12:31:35 -0000
@@ -1879,6 +1879,8 @@
DECL_HANDLER(set_caret_window)
{
struct msg_queue *queue = get_current_queue();
+ int x = 0, y = 0;
+ user_handle_t handle;
reply->previous = 0;
if (queue && check_queue_input_window( queue, req->handle ))
@@ -1890,9 +1892,16 @@
reply->old_hide = input->caret_hide;
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;
+ handle = get_user_full_handle(req->handle);
+ if (input->caret == handle) {
+ x = input->caret_rect.left;
+ y = input->caret_rect.top;
+ }
+ set_caret_window( input, handle );
+ input->caret_rect.left = x;
+ input->caret_rect.top = y;
+ input->caret_rect.right = x + req->width;
+ input->caret_rect.bottom = y + req->height;
}
}
More information about the wine-patches
mailing list