Mercurial > emacs
changeset 35038:ac8eb6b4eee6
(Fdelete_other_windows): Set window's window_end_valid
to nil when changing the window's start. Don't change the
window's start when its top position hasn't changed. If we do,
this will set the window's optional_new_start, which act's like a
force_start during redisplay with C-x 1 M-> under particular
circumstances (see report from Per Starback to emacs-pretest-bug
from 2000-12-13.).
(Fdelete_other_windows): Set window's window_end_valid
to nil when changing the window's start.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 04 Jan 2001 12:53:14 +0000 |
parents | 3c5b13084896 |
children | 14c95b31ec71 |
files | src/window.c |
diffstat | 1 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/window.c Thu Jan 04 11:32:58 2001 +0000 +++ b/src/window.c Thu Jan 04 12:53:14 2001 +0000 @@ -1691,8 +1691,7 @@ Qnil, look at just the selected frame; Qvisible, look at visible frames; a frame, just look at windows on that frame. - If MINI is non-zero, perform the operation on minibuffer windows too. -*/ + If MINI is non-zero, perform the operation on minibuffer windows too. */ enum window_loop { @@ -1989,13 +1988,12 @@ { struct window *w; int startpos; - int top; + int top, new_top; if (NILP (window)) window = selected_window; else CHECK_LIVE_WINDOW (window, 0); - w = XWINDOW (window); startpos = marker_position (w->start); @@ -2011,7 +2009,9 @@ on the frame. But don't try to do this if the window start is outside the visible portion (as might happen when the display is not current, due to typeahead). */ - if (startpos >= BUF_BEGV (XBUFFER (w->buffer)) + new_top = XFASTINT (w->top) - FRAME_TOP_MARGIN (XFRAME (WINDOW_FRAME (w))); + if (new_top != top + && startpos >= BUF_BEGV (XBUFFER (w->buffer)) && startpos <= BUF_ZV (XBUFFER (w->buffer))) { struct position pos; @@ -2023,6 +2023,7 @@ pos = *vmotion (startpos, -top, w); set_marker_both (w->start, w->buffer, pos.bufpos, pos.bytepos); + w->window_end_valid = Qnil; w->start_at_line_beg = ((pos.bytepos == BEGV_BYTE || FETCH_BYTE (pos.bytepos - 1) == '\n') ? Qt : Qnil);