]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_display_and_set_cursor): Change the cursor in the same
authorRichard M. Stallman <rms@gnu.org>
Tue, 28 May 2002 20:28:12 +0000 (20:28 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 28 May 2002 20:28:12 +0000 (20:28 +0000)
way for blinked-off state and for a nonselected window.

src/ChangeLog
src/xterm.c

index c77814bb4e807bab7c43fc5f642b74fa0bcc3e38..6cb066ecea67d77aaa2fdc132b1c02e9a7b35ac3 100644 (file)
@@ -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.
index c98d278c771abbcda554d2412d2297ace2cb8a2d..77961b432290b09fcbd29f64a56867c6c812fd80 100644 (file)
@@ -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.  */