static void window_scroll (Lisp_Object, EMACS_INT, bool, int);
static void window_scroll_pixel_based (Lisp_Object, int, bool, int);
static void window_scroll_line_based (Lisp_Object, int, bool, int);
-static Lisp_Object window_list (void);
static int add_window_to_list (struct window *, void *);
static Lisp_Object next_window (Lisp_Object, Lisp_Object,
Lisp_Object, int);
record_buffer before returning here. */
goto record_and_return;
+ if (NILP (norecord))
+ /* Mark the window for redisplay since the selected-window has a different
+ mode-line. */
+ wset_redisplay (XWINDOW (selected_window));
+ else
+ redisplay_other_windows ();
sf = SELECTED_FRAME ();
if (XFRAME (WINDOW_FRAME (w)) != sf)
{
select_window_1 (window, inhibit_point_swap);
bset_last_selected_window (XBUFFER (w->contents), window);
- windows_or_buffers_changed = 24;
+ if (NILP (norecord))
+ wset_redisplay (w);
record_and_return:
/* record_buffer can run QUIT, so make sure it is run only after we have
if (NILP (noforce))
w->force_start = 1;
w->update_mode_line = 1;
+ /* Bug#15957. */
+ w->window_end_valid = 0;
if (w != XWINDOW (selected_window))
- /* Enforce full redisplay. FIXME: make it more selective. */
- windows_or_buffers_changed = 26;
+ wset_redisplay (w);
return pos;
}
Vwindow_list is a list, return that list. Otherwise, build a new
list, cache it in Vwindow_list, and return that. */
-static Lisp_Object
+Lisp_Object
window_list (void)
{
if (!CONSP (Vwindow_list))
mark_window_display_accurate (window, 0);
w->update_mode_line = 1;
XBUFFER (obj)->prevent_redisplay_optimizations_p = 1;
- ++update_mode_lines;
+ update_mode_lines = 27;
best_window = window;
}
break;
if (NILP (object))
{
windows_or_buffers_changed = 29;
- update_mode_lines++;
+ update_mode_lines = 28;
return Qt;
}
w->update_mode_line = 1;
if (BUFFERP (w->contents))
XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1;
- ++update_mode_lines;
+ update_mode_lines = 29;
return Qt;
}
c = NILP (c->next) ? 0 : XWINDOW (c->next);
}
}
+ else
+ /* Bug#15957. */
+ w->window_end_valid = 0;
}
/* Grow the mini-window. */
w->top_line = r->top_line + r->total_lines;
w->total_lines -= XINT (value);
- /* Enforce full redisplay. FIXME: make it more selective. */
- windows_or_buffers_changed = 34;
+ /* Enforce full redisplay of the frame. */
+ /* FIXME: Shouldn't window--resize-root-window-vertically do it? */
+ fset_redisplay (f);
adjust_frame_glyphs (f);
unblock_input ();
}
/* Shrink the mini-window. */
w->top_line = r->top_line + r->total_lines;
w->total_lines = 1;
- /* Enforce full redisplay. FIXME: make it more selective. */
- windows_or_buffers_changed = 35;
+ /* Enforce full redisplay of the frame. */
+ /* FIXME: Shouldn't window--resize-root-window-vertically do it? */
+ fset_redisplay (f);
adjust_frame_glyphs (f);
unblock_input ();
}
else
window_scroll_line_based (window, n, whole, noerror);
+ /* Bug#15957. */
+ XWINDOW (window)->window_end_valid = 0;
immediate_quit = 0;
}