]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/xdisp.c (display_mode_lines): Keep selected_window and selected_frame
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Dec 2012 15:52:43 +0000 (10:52 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Dec 2012 15:52:43 +0000 (10:52 -0500)
in sync.

src/ChangeLog
src/xdisp.c

index 2e7c05e3d36377fdf8562e33296d110b74d0e86b..a35c51b8555202a15bd0b9f65268945c11ac533a 100644 (file)
@@ -1,7 +1,7 @@
 2012-12-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * 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  <eliz@gnu.org>
 
index 4a47892a39fc40f15d2d58aeb39e9b7468188cd6..f7fc75f8c2555c02a8f2dc0c8f96e1abf5dc1619 100644 (file)
@@ -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;