From: Eli Zaretskii Date: Sat, 24 Oct 2015 15:41:32 +0000 (+0300) Subject: Update frame title when scrolling the selected window X-Git-Tag: emacs-25.0.90~1035 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=41518e5b6354cf6aa946de2e5b02b728f7b15b8c;p=emacs.git 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. --- diff --git a/src/window.c b/src/window.c index a8605ee628c..7c95ff9b16f 100644 --- a/src/window.c +++ b/src/window.c @@ -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;