diff options
| author | Jan Djärv | 2009-07-03 11:07:02 +0000 |
|---|---|---|
| committer | Jan Djärv | 2009-07-03 11:07:02 +0000 |
| commit | e044e4fcd50c4db40c9efb40dd395bace59f287b (patch) | |
| tree | b5bae9d80138aba8501ad0d4cbb56cce5492dd09 /src/frame.c | |
| parent | 2e9b968b289df9e1237d21253c8057789fb33808 (diff) | |
| download | emacs-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.c | 39 |
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. */ | ||
| 56 | Lisp_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 | ||
| 4356 | void | ||
| 4357 | frame_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 | |||
| 4372 | void | ||
| 4373 | frame_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 | |||
| 4552 | when the mouse is over clickable text. */); | 4586 | when 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. | ||
| 4591 | The 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. |
| 4557 | The functions are run with one arg, the frame to be deleted. | 4596 | The functions are run with one arg, the frame to be deleted. |