From f7e039de270fcf2c788d4f938060600db34b78f3 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 28 May 2002 20:28:12 +0000 Subject: [PATCH] (x_display_and_set_cursor): Change the cursor in the same way for blinked-off state and for a nonselected window. --- src/ChangeLog | 13 +++++++++ src/xterm.c | 74 +++++++++++++++++++++++++++++---------------------- 2 files changed, 55 insertions(+), 32 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index c77814bb4e8..6cb066ecea6 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,16 @@ +2002-05-28 Richard M. Stallman + + * xterm.c (x_display_and_set_cursor): Change the cursor in the same + way for blinked-off state and for a nonselected window. + + * window.c (window_scroll_pixel_based): Don't call Fbolp; + instead, see if the new start pos is at beginning of line. + + * fileio.c (Fwrite_region): If START is a string, don't + make any annotations. + + * eval.c (syms_of_eval): Doc fix. + 2002-05-28 Colin Walters * emacs.c (USAGE1): Add --no-splash. diff --git a/src/xterm.c b/src/xterm.c index c98d278c771..77961b43229 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -11649,6 +11649,7 @@ x_display_and_set_cursor (w, on, hpos, vpos, x, y) struct frame *f = XFRAME (w->frame); int new_cursor_type; int new_cursor_width; + int cursor_off_state = 0; struct glyph_matrix *current_glyphs; struct glyph_row *glyph_row; struct glyph *glyph; @@ -11688,52 +11689,61 @@ x_display_and_set_cursor (w, on, hpos, vpos, x, y) marked off, draw no cursor. In all other cases, we want a hollow box cursor. */ new_cursor_width = -1; + new_cursor_type = -2; + + /* Echo area */ if (cursor_in_echo_area && FRAME_HAS_MINIBUF_P (f) && EQ (FRAME_MINIBUF_WINDOW (f), echo_area_window)) { if (w == XWINDOW (echo_area_window)) new_cursor_type = FRAME_DESIRED_CURSOR (f); - else if (!NILP (Fbuffer_local_value (Qcursor_in_non_selected_windows, - w->buffer))) - new_cursor_type = HOLLOW_BOX_CURSOR; + else if (NILP (Fbuffer_local_value (Qcursor_in_non_selected_windows, + w->buffer))) + new_cursor_type = NO_CURSOR; else + cursor_off_state = 1; + } + + /* Nonselected window or nonselected frame. */ + else if (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame + || w != XWINDOW (f->selected_window)) + { + if ((MINI_WINDOW_P (w) && minibuf_level == 0) + || NILP (Fbuffer_local_value (Qcursor_in_non_selected_windows, + w->buffer)) + || NILP (XBUFFER (w->buffer)->cursor_type)) new_cursor_type = NO_CURSOR; + else + cursor_off_state = 1; } - else + + /* If new_cursor_type isn't decided yet, decide it now. */ + if (new_cursor_type == -2) { - if (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame - || w != XWINDOW (f->selected_window)) - { - if ((MINI_WINDOW_P (w) && minibuf_level == 0) - || NILP (Fbuffer_local_value (Qcursor_in_non_selected_windows, - w->buffer)) - || NILP (XBUFFER (w->buffer)->cursor_type)) - new_cursor_type = NO_CURSOR; - else - new_cursor_type = HOLLOW_BOX_CURSOR; - } + struct buffer *b = XBUFFER (w->buffer); + + if (EQ (b->cursor_type, Qt)) + new_cursor_type = FRAME_DESIRED_CURSOR (f); else - { - struct buffer *b = XBUFFER (w->buffer); + new_cursor_type = x_specified_cursor_type (b->cursor_type, + &new_cursor_width); + } - if (EQ (b->cursor_type, Qt)) - new_cursor_type = FRAME_DESIRED_CURSOR (f); - else - new_cursor_type = x_specified_cursor_type (b->cursor_type, - &new_cursor_width); - if (w->cursor_off_p) - { - if (new_cursor_type == FILLED_BOX_CURSOR) - new_cursor_type = HOLLOW_BOX_CURSOR; - else if (new_cursor_type == BAR_CURSOR && new_cursor_width > 1) - new_cursor_width = 1; - else - new_cursor_type = NO_CURSOR; - } - } + /* Dim out or hollow out the cursor, + if it has blinked off or for nonselected windows. */ + if (w->cursor_off_p || cursor_off_state) + { + if (new_cursor_type == FILLED_BOX_CURSOR) + new_cursor_type = HOLLOW_BOX_CURSOR; + else if (new_cursor_type == BAR_CURSOR && new_cursor_width > 1) + new_cursor_width = 1; + else + new_cursor_type = NO_CURSOR; } + /* Now new_cursor_type is correct. */ + /* If cursor is currently being shown and we don't want it to be or it is in the wrong place, or the cursor type is not what we want, erase it. */ -- 2.39.2