(x_display_and_set_cursor): Change the cursor in the same
way for blinked-off state and for a nonselected window.
This commit is contained in:
parent
dad67609c8
commit
f7e039de27
2 changed files with 57 additions and 34 deletions
|
@ -1,3 +1,16 @@
|
|||
2002-05-28 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* 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 <walters@debian.org>
|
||||
|
||||
* emacs.c (USAGE1): Add --no-splash.
|
||||
|
|
78
src/xterm.c
78
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,51 +11689,60 @@ 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)))
|
||||
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;
|
||||
}
|
||||
|
||||
/* If new_cursor_type isn't decided yet, decide it now. */
|
||||
if (new_cursor_type == -2)
|
||||
{
|
||||
struct buffer *b = XBUFFER (w->buffer);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
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
|
||||
new_cursor_type = HOLLOW_BOX_CURSOR;
|
||||
}
|
||||
else
|
||||
{
|
||||
struct buffer *b = XBUFFER (w->buffer);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* 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,
|
||||
|
|
Loading…
Add table
Reference in a new issue