aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 1f7ac269e4e..557cb606317 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13334,7 +13334,10 @@ unwind_format_mode_line (Lisp_Object vector)
13334 if (!EQ (frame, WINDOW_FRAME (XWINDOW (old_window)))) 13334 if (!EQ (frame, WINDOW_FRAME (XWINDOW (old_window))))
13335 Fselect_window (target_frame_window, Qt); 13335 Fselect_window (target_frame_window, Qt);
13336 13336
13337 if (!NILP (old_top_frame) && !EQ (old_top_frame, frame)) 13337 if (!NILP (old_top_frame) && !EQ (old_top_frame, frame)
13338 /* This could've been destroyed during the formatting,
13339 possibly because the terminal was deleted. */
13340 && FRAME_LIVE_P (XFRAME (old_top_frame)))
13338 Fselect_frame (old_top_frame, Qt); 13341 Fselect_frame (old_top_frame, Qt);
13339 } 13342 }
13340 13343
@@ -13437,6 +13440,7 @@ void
13437gui_consider_frame_title (Lisp_Object frame) 13440gui_consider_frame_title (Lisp_Object frame)
13438{ 13441{
13439 struct frame *f = XFRAME (frame); 13442 struct frame *f = XFRAME (frame);
13443 Lisp_Object format_data;
13440 13444
13441 if ((FRAME_WINDOW_P (f) 13445 if ((FRAME_WINDOW_P (f)
13442 || FRAME_MINIBUF_ONLY_P (f) 13446 || FRAME_MINIBUF_ONLY_P (f)
@@ -13481,15 +13485,19 @@ gui_consider_frame_title (Lisp_Object frame)
13481 specbind (Qinhibit_redisplay, Qt); 13485 specbind (Qinhibit_redisplay, Qt);
13482 13486
13483 /* Switch to the buffer of selected window of the frame. Set up 13487 /* Switch to the buffer of selected window of the frame. Set up
13484 mode_line_target so that display_mode_element will output into 13488 mode_line_target so that display_mode_element will output
13485 mode_line_noprop_buf; then display the title. */ 13489 into mode_line_noprop_buf; then display the title. Save the
13486 record_unwind_protect (unwind_format_mode_line, 13490 original frame and selected window, and possibly the topmost
13487 format_mode_line_unwind_data 13491 frame of the tty (for tty frames) into a vector; it will be
13488 (f, current_buffer, selected_window, false)); 13492 restored later. */
13493
13494 format_data = format_mode_line_unwind_data (f, current_buffer,
13495 selected_window,
13496 false);
13497 record_unwind_protect (unwind_format_mode_line, format_data);
13489 13498
13490 Fselect_window (f->selected_window, Qt); 13499 Fselect_window (f->selected_window, Qt);
13491 set_buffer_internal_1 13500 set_buffer_internal_1 (XBUFFER (XWINDOW (f->selected_window)->contents));
13492 (XBUFFER (XWINDOW (f->selected_window)->contents));
13493 fmt = FRAME_ICONIFIED_P (f) ? Vicon_title_format : Vframe_title_format; 13501 fmt = FRAME_ICONIFIED_P (f) ? Vicon_title_format : Vframe_title_format;
13494 13502
13495 mode_line_target = MODE_LINE_TITLE; 13503 mode_line_target = MODE_LINE_TITLE;
@@ -13502,8 +13510,9 @@ gui_consider_frame_title (Lisp_Object frame)
13502 /* Make sure that any raw bytes in the title are properly 13510 /* Make sure that any raw bytes in the title are properly
13503 represented by their multibyte sequences. */ 13511 represented by their multibyte sequences. */
13504 ptrdiff_t nchars = 0; 13512 ptrdiff_t nchars = 0;
13505 len = str_as_multibyte ((unsigned char *)title, 13513 len = str_as_multibyte ((unsigned char *) title,
13506 mode_line_noprop_buf_end - title, len, &nchars); 13514 mode_line_noprop_buf_end - title,
13515 len, &nchars);
13507 unbind_to (count, Qnil); 13516 unbind_to (count, Qnil);
13508 13517
13509 /* Set the title only if it's changed. This avoids consing in 13518 /* Set the title only if it's changed. This avoids consing in