Commit 41518e5b authored by Eli Zaretskii's avatar Eli Zaretskii

Update frame title when scrolling the selected window

* src/window.c (wset_update_mode_line): New function, sets either the
window's update_mode_line flag or the global update_mode_lines
variable.
(Fset_window_start, set_window_buffer, window_scroll_pixel_based)
(window_scroll_line_based): Call it instead of only setting the
window's update_mode_line flag.
parent 7a6968b4
......@@ -205,6 +205,20 @@ wset_combination (struct window *w, bool horflag, Lisp_Object val)
w->horizontal = horflag;
}
static void
wset_update_mode_line (struct window *w)
{
/* If this window is the selected window on its frame, set the
global variable update_mode_lines, so that x_consider_frame_title
will consider this frame's title for rtedisplay. */
Lisp_Object fselected_window = XFRAME (WINDOW_FRAME (w))->selected_window;
if (WINDOWP (fselected_window) && XWINDOW (fselected_window) == w)
update_mode_lines = 42;
else
w->update_mode_line = true;
}
/* True if leaf window W doesn't reflect the actual state
of displayed buffer due to its text or overlays change. */
......@@ -1666,7 +1680,7 @@ overriding motion of point in order to display at this exact start. */)
w->start_at_line_beg = false;
if (NILP (noforce))
w->force_start = true;
w->update_mode_line = true;
wset_update_mode_line (w);
/* Bug#15957. */
w->window_end_valid = false;
wset_redisplay (w);
......@@ -3271,14 +3285,8 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
/* Maybe we could move this into the `if' but it's not obviously safe and
I doubt it's worth the trouble. */
wset_redisplay (w);
/* If this window is the selected window on its frame, set the
global variable update_mode_lines, so that x_consider_frame_title
will consider this frame's title for rtedisplay. */
Lisp_Object fselected_window = XFRAME (WINDOW_FRAME (w))->selected_window;
if (WINDOWP (fselected_window) && XWINDOW (fselected_window) == w)
update_mode_lines = 42;
else
w->update_mode_line = true;
wset_update_mode_line (w);
/* We must select BUFFER to run the window-scroll-functions and to look up
the buffer-local value of Vwindow_point_insertion_type. */
......@@ -4829,7 +4837,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror)
set_marker_restricted (w->start, make_number (spos),
w->contents);
w->start_at_line_beg = true;
w->update_mode_line = true;
wset_update_mode_line (w);
/* Set force_start so that redisplay_window will run the
window-scroll-functions. */
w->force_start = true;
......@@ -4977,7 +4985,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror)
IT_BYTEPOS (it));
bytepos = marker_byte_position (w->start);
w->start_at_line_beg = (pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n');
w->update_mode_line = true;
wset_update_mode_line (w);
/* Set force_start so that redisplay_window will run the
window-scroll-functions. */
w->force_start = true;
......@@ -5211,7 +5219,7 @@ window_scroll_line_based (Lisp_Object window, int n, bool whole, bool noerror)
set_marker_restricted_both (w->start, w->contents, pos, pos_byte);
w->start_at_line_beg = !NILP (bolp);
w->update_mode_line = true;
wset_update_mode_line (w);
/* Set force_start so that redisplay_window will run
the window-scroll-functions. */
w->force_start = true;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment