From 712eaef29d5898ee8e4de5da755e501ba4908446 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Wed, 12 Jul 2000 15:11:40 +0000 Subject: [PATCH] (struct redisplay_interface): Add parameter MOUSE_FACE_OVERWRITTEN_P to update_window_end_hook function. (clear_mouse_face): New function pointer member. --- src/ChangeLog | 25 +++++++++++++++++++++++++ src/dispextern.h | 11 +++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 0eb840f11be..f9e7e1fda8c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,28 @@ +2000-07-12 Gerd Moellmann + + * 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 * syntax.c (back_comment): Use one switch rather than a few `if's. diff --git a/src/dispextern.h b/src/dispextern.h index 2fa2bf0caea..1ae8e66da85 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -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, -- 2.39.2