aboutsummaryrefslogtreecommitdiffstats
path: root/src/frame.c
diff options
context:
space:
mode:
authorJan Djärv2009-07-03 11:07:02 +0000
committerJan Djärv2009-07-03 11:07:02 +0000
commite044e4fcd50c4db40c9efb40dd395bace59f287b (patch)
treeb5bae9d80138aba8501ad0d4cbb56cce5492dd09 /src/frame.c
parent2e9b968b289df9e1237d21253c8057789fb33808 (diff)
downloademacs-e044e4fcd50c4db40c9efb40dd395bace59f287b.tar.gz
emacs-e044e4fcd50c4db40c9efb40dd395bace59f287b.zip
* 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.
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/frame.c b/src/frame.c
index 506a4225a93..fa50d8752df 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -52,6 +52,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
52#endif 52#endif
53 53
54 54
55/* If we shall make pointer invisible when typing or not. */
56Lisp_Object Vmake_pointer_invisible;
57
55#ifdef HAVE_WINDOW_SYSTEM 58#ifdef HAVE_WINDOW_SYSTEM
56 59
57/* The name we're using in resource queries. Most often "emacs". */ 60/* The name we're using in resource queries. Most often "emacs". */
@@ -4350,6 +4353,37 @@ x_figure_window_size (f, parms, toolbar_p)
4350 4353
4351#endif /* HAVE_WINDOW_SYSTEM */ 4354#endif /* HAVE_WINDOW_SYSTEM */
4352 4355
4356void
4357frame_make_pointer_invisible ()
4358{
4359 if (! NILP (Vmake_pointer_invisible))
4360 {
4361 struct frame *f = SELECTED_FRAME ();
4362 if (f && !f->pointer_invisible
4363 && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook)
4364 {
4365 f->mouse_moved = 0;
4366 FRAME_TERMINAL (f)->toggle_invisible_pointer_hook (f, 1);
4367 f->pointer_invisible = 1;
4368 }
4369 }
4370}
4371
4372void
4373frame_make_pointer_visible ()
4374{
4375 /* We don't check Vmake_pointer_invisible here in case the
4376 pointer was invisible when Vmake_pointer_invisible was set to nil. */
4377
4378 struct frame *f = SELECTED_FRAME ();
4379 if (f && f->pointer_invisible && f->mouse_moved
4380 && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook)
4381 {
4382 FRAME_TERMINAL (f)->toggle_invisible_pointer_hook (f, 0);
4383 f->pointer_invisible = 0;
4384 }
4385}
4386
4353 4387
4354 4388
4355/*********************************************************************** 4389/***********************************************************************
@@ -4552,6 +4586,11 @@ is over the clickable text. However, the mouse shape still indicates
4552when the mouse is over clickable text. */); 4586when the mouse is over clickable text. */);
4553 Vmouse_highlight = Qt; 4587 Vmouse_highlight = Qt;
4554 4588
4589 DEFVAR_LISP ("make-pointer-invisible", &Vmake_pointer_invisible,
4590 doc: /* If non-nil, make pointer invisible while typing.
4591The pointer becomes visible again when the mouse is moved. */);
4592 Vmake_pointer_invisible = Qt;
4593
4555 DEFVAR_LISP ("delete-frame-functions", &Vdelete_frame_functions, 4594 DEFVAR_LISP ("delete-frame-functions", &Vdelete_frame_functions,
4556 doc: /* Functions to be run before deleting a frame. 4595 doc: /* Functions to be run before deleting a frame.
4557The functions are run with one arg, the frame to be deleted. 4596The functions are run with one arg, the frame to be deleted.