From ad966fe7542070b5c9aa34ed019d586e7c3adae6 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 14 Dec 2012 10:52:43 -0500 Subject: [PATCH] * src/xdisp.c (display_mode_lines): Keep selected_window and selected_frame in sync. --- src/ChangeLog | 4 ++-- src/xdisp.c | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2e7c05e3d36..a35c51b8555 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,7 +1,7 @@ 2012-12-14 Stefan Monnier - * xdisp.c (select_frame_for_redisplay): Keep selected_window and - selected_frame in sync. + * xdisp.c (select_frame_for_redisplay, display_mode_lines): + Keep selected_window and selected_frame in sync. 2012-12-14 Eli Zaretskii diff --git a/src/xdisp.c b/src/xdisp.c index 4a47892a39f..f7fc75f8c25 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -20354,12 +20354,13 @@ redisplay_mode_lines (Lisp_Object window, int force) static int display_mode_lines (struct window *w) { - Lisp_Object old_selected_window, old_selected_frame; + Lisp_Object old_selected_window = selected_window; + Lisp_Object old_selected_frame = selected_frame; + Lisp_Object new_frame = w->frame; + Lisp_Object old_frame_selected_window = XFRAME (new_frame)->selected_window; int n = 0; - old_selected_frame = selected_frame; selected_frame = w->frame; - old_selected_window = selected_window; XSETWINDOW (selected_window, w); /* These will be set while the mode line specs are processed. */ @@ -20383,6 +20384,7 @@ display_mode_lines (struct window *w) ++n; } + XFRAME (new_frame)->selected_window = old_frame_selected_window; selected_frame = old_selected_frame; selected_window = old_selected_window; return n; -- 2.39.5