emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r110971: * src/xdisp.c (fast_set_sele


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r110971: * src/xdisp.c (fast_set_selected_frame): Rename from update_tool_bar_unwind.
Date: Wed, 21 Nov 2012 11:34:35 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 110971
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2012-11-21 11:34:35 -0500
message:
  * src/xdisp.c (fast_set_selected_frame): Rename from update_tool_bar_unwind.
  Make it set selected_window as well.
  (update_tool_bar): Use it.
modified:
  src/ChangeLog
  src/xdisp.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-11-21 04:47:55 +0000
+++ b/src/ChangeLog     2012-11-21 16:34:35 +0000
@@ -1,3 +1,9 @@
+2012-11-21  Stefan Monnier  <address@hidden>
+
+       * xdisp.c (fast_set_selected_frame): Rename from update_tool_bar_unwind.
+       Make it set selected_window as well.
+       (update_tool_bar): Use it.
+
 2012-11-21  Ken Brown  <address@hidden>
 
        * emacs.c (main): Set the G_SLICE environment variable for all

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2012-11-21 04:47:55 +0000
+++ b/src/xdisp.c       2012-11-21 16:34:35 +0000
@@ -11484,11 +11484,18 @@
 
 int last_tool_bar_item;
 
-
+/* Select `frame' temporarily without running all the code in
+   do_switch_frame.
+   FIXME: Maybe do_switch_frame should be trimmed down similarly
+   when `norecord' is set.  */
 static Lisp_Object
-update_tool_bar_unwind (Lisp_Object frame)
+fast_set_selected_frame (Lisp_Object frame)
 {
-  selected_frame = frame;
+  if (!EQ (selected_frame, frame))
+    {
+      selected_frame = frame;
+      selected_window = XFRAME (frame)->selected_window;
+    }
   return Qnil;
 }
 
@@ -11560,9 +11567,13 @@
             before calling tool_bar_items, because the calculation of
             the tool-bar keymap uses the selected frame (see
             `tool-bar-make-keymap' in tool-bar.el).  */
-         record_unwind_protect (update_tool_bar_unwind, selected_frame);
+         eassert (EQ (selected_window,
+                      /* Since we only explicitly preserve selected_frame,
+                         check that selected_window would be redundant.  */
+                      XFRAME (selected_frame)->selected_window));
+         record_unwind_protect (fast_set_selected_frame, selected_frame);
          XSETFRAME (frame, f);
-         selected_frame = frame;
+         fast_set_selected_frame (frame);
 
          /* Build desired tool-bar items from keymaps.  */
           new_tool_bar


reply via email to

[Prev in Thread] Current Thread [Next in Thread]