(struct redisplay_interface): Add parameter
authorGerd Moellmann <gerd@gnu.org>
Wed, 12 Jul 2000 15:11:40 +0000 (15:11 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 12 Jul 2000 15:11:40 +0000 (15:11 +0000)
MOUSE_FACE_OVERWRITTEN_P to update_window_end_hook function.
(clear_mouse_face): New function pointer member.

src/ChangeLog
src/dispextern.h

index 0eb840f..f9e7e1f 100644 (file)
@@ -1,3 +1,28 @@
+2000-07-12  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (try_window_reusing_current_matrix, try_window_id):
+       Before scrolling, turn off a mouse-highlight in the window
+       being scrolled.
+
+       * xterm.c (x_update_window_end): Add parameter
+       MOUSE_FACE_OVERWRITTEN_P.  If set, arrange for a mouse-highlight
+       redisplay in XTframe_up_to_date.
+       (x_clear_mouse_face): New function.
+       (x_redisplay_interface): Add pointer to x_clear_mouse_face.
+
+       * dispnew.c (make_current): Preserve the mouse_face_p flag of the
+       current glyph row.
+       (update_window_line): Add parameter MOUSE_FACE_OVERWRITTEN_P.  Set
+       it when any row is written to that contains glyphs highlighted in
+       mouse-face.
+       (update_window): Call the window update end hook with new
+       parameter MOUSE_FACE_OVERWRITTEN_P.
+       (direct_output_for_insert): Give up if row contains mouse-face.
+
+       * dispextern.h (struct redisplay_interface): Add parameter
+       MOUSE_FACE_OVERWRITTEN_P to update_window_end_hook function.
+       (clear_mouse_face): New function pointer member.
+
 2000-07-11  Stefan Monnier  <monnier@cs.yale.edu>
 
        * syntax.c (back_comment): Use one switch rather than a few `if's.
index 2fa2bf0..1ae8e66 100644 (file)
@@ -1862,8 +1862,12 @@ struct redisplay_interface
   void (*update_window_begin_hook) P_ ((struct window *w));
 
   /* Function to call after window W has been updated in window-based
-     redisplay.  CURSOR_ON_P non-zero means switch cursor on.  */
-  void (*update_window_end_hook) P_ ((struct window *w, int cursor_on_p));
+     redisplay.  CURSOR_ON_P non-zero means switch cursor on.
+     MOUSE_FACE_OVERWRITTEN_P non-zero means that some lines in W
+     that contained glyphs in mouse-face were overwritten, so we
+     have to update the mouse hightlight.  */
+  void (*update_window_end_hook) P_ ((struct window *w, int cursor_on_p,
+                                     int mouse_face_overwritten_p));
   
   /* Move cursor to row/column position VPOS/HPOS, pixel coordinates
      Y/X. HPOS/VPOS are window-relative row and column numbers and X/Y
@@ -1873,6 +1877,9 @@ struct redisplay_interface
   /* Flush the display of frame F.  For X, this is XFlush.  */
   void (*flush_display) P_ ((struct frame *f));
 
+  /* Clear the mouse hightlight in windwo W, if there is any.  */
+  void (*clear_mouse_face) P_ ((struct window *w));
+
   /* Set *LEFT and *RIGHT to the left and right overhang of GLYPH on
      frame F.  */
   void (*get_glyph_overhangs) P_ ((struct glyph *glyph, struct frame *f,