Mercurial > emacs
changeset 40385:b3dbd98f9b97
(w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
<WM_EMACS_DESTROY_CARET, WM_EMACS_TRACK_CARET>: Track cursor
position using the system caret.
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Sat, 27 Oct 2001 22:30:55 +0000 |
parents | 25e6d4bb5f7f |
children | 7bdfd55ddbe9 |
files | src/w32fns.c |
diffstat | 1 files changed, 26 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32fns.c Sat Oct 27 22:21:24 2001 +0000 +++ b/src/w32fns.c Sat Oct 27 22:30:55 2001 +0000 @@ -307,6 +307,12 @@ extern Lisp_Object Vw32_num_mouse_buttons; extern Lisp_Object Vw32_recognize_altgr; +extern HWND w32_system_caret_hwnd; +extern int w32_system_caret_width; +extern int w32_system_caret_height; +extern int w32_system_caret_x; +extern int w32_system_caret_y; + /* Error if we are not connected to MS-Windows. */ void @@ -4785,6 +4791,12 @@ unregister_hot_keys (hwnd); button_state = 0; ReleaseCapture (); + /* Relinquish the system caret. */ + if (w32_system_caret_hwnd) + { + DestroyCaret (); + w32_system_caret_hwnd = NULL; + } case WM_MOVE: case WM_SIZE: case WM_COMMAND: @@ -4926,6 +4938,20 @@ DragAcceptFiles ((HWND) wParam, FALSE); return DestroyWindow ((HWND) wParam); + case WM_EMACS_DESTROY_CARET: + w32_system_caret_hwnd = NULL; + return DestroyCaret (); + + case WM_EMACS_TRACK_CARET: + /* If there is currently no system caret, create one. */ + if (w32_system_caret_hwnd == NULL) + { + w32_system_caret_hwnd = hwnd; + CreateCaret (hwnd, NULL, w32_system_caret_width, + w32_system_caret_height); + } + return SetCaretPos (w32_system_caret_x, w32_system_caret_y); + case WM_EMACS_TRACKPOPUPMENU: { UINT flags;