Mercurial > emacs
diff src/frame.c @ 103704:6a4e411bd83b
* xterm.h (struct x_display_info): Add invisible_cursor.
(struct x_output): Add current_cursor.
* xterm.c (XTtoggle_invisible_pointer): New function.
(x_define_frame_cursor): Don't define cursor if invisible or the
same as before. Set current_cursor.
(x_create_terminal): Set toggle_invisible_pointer_hook.
* xfns.c (make_invisible_cursor): New function.
(x_set_mouse_color): Call make_invisible_cursor.
Set current_cursor.
(x_window): Set current_cursor.
* termhooks.h (struct terminal): Add toggle_invisible_pointer_hook.
* keyboard.c (command_loop_1): Call frame_make_pointer_invisible after
inserting a character.
(read_avail_input): Call frame_make_pointer_visible.
* frame.c (Vmake_pointer_invisible): New variable.
(frame_make_pointer_invisible, frame_make_pointer_visible): New
functions.
(syms_of_frame): DEFVAR make-pointer-invisible, initialize to Qt.
* frame.h: Declare frame_make_pointer_invisible and
frame_make_pointer_visible.
(struct frame): Add pointer_invisible.
* cus-start.el (all): Added make-pointer-invisible.
author | Jan Djärv <jan.h.d@swipnet.se> |
---|---|
date | Fri, 03 Jul 2009 11:07:02 +0000 |
parents | 1867be80e595 |
children | 8a91154e34a2 |
line wrap: on
line diff
--- a/src/frame.c Fri Jul 03 01:43:33 2009 +0000 +++ b/src/frame.c Fri Jul 03 11:07:02 2009 +0000 @@ -52,6 +52,9 @@ #endif +/* If we shall make pointer invisible when typing or not. */ +Lisp_Object Vmake_pointer_invisible; + #ifdef HAVE_WINDOW_SYSTEM /* The name we're using in resource queries. Most often "emacs". */ @@ -4350,6 +4353,37 @@ #endif /* HAVE_WINDOW_SYSTEM */ +void +frame_make_pointer_invisible () +{ + if (! NILP (Vmake_pointer_invisible)) + { + struct frame *f = SELECTED_FRAME (); + if (f && !f->pointer_invisible + && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook) + { + f->mouse_moved = 0; + FRAME_TERMINAL (f)->toggle_invisible_pointer_hook (f, 1); + f->pointer_invisible = 1; + } + } +} + +void +frame_make_pointer_visible () +{ + /* We don't check Vmake_pointer_invisible here in case the + pointer was invisible when Vmake_pointer_invisible was set to nil. */ + + struct frame *f = SELECTED_FRAME (); + if (f && f->pointer_invisible && f->mouse_moved + && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook) + { + FRAME_TERMINAL (f)->toggle_invisible_pointer_hook (f, 0); + f->pointer_invisible = 0; + } +} + /*********************************************************************** @@ -4552,6 +4586,11 @@ when the mouse is over clickable text. */); Vmouse_highlight = Qt; + DEFVAR_LISP ("make-pointer-invisible", &Vmake_pointer_invisible, + doc: /* If non-nil, make pointer invisible while typing. +The pointer becomes visible again when the mouse is moved. */); + Vmake_pointer_invisible = Qt; + DEFVAR_LISP ("delete-frame-functions", &Vdelete_frame_functions, doc: /* Functions to be run before deleting a frame. The functions are run with one arg, the frame to be deleted.