aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1998-04-08 07:15:02 +0000
committerRichard M. Stallman1998-04-08 07:15:02 +0000
commit5ba50c519e52df945ef7c4063f15ac9c73b99208 (patch)
tree0e5bcba567554213fc62d1c78a37af172d0e8e3a /src
parentd8afad26de00051491b9dcad7a2c73b45063733f (diff)
downloademacs-5ba50c519e52df945ef7c4063f15ac9c73b99208.tar.gz
emacs-5ba50c519e52df945ef7c4063f15ac9c73b99208.zip
(redisplay_window): If updating mode line,
temporarily change selected_frame
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c37
1 files changed, 30 insertions, 7 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index dfc64cb1ff7..3983d26134e 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1739,6 +1739,7 @@ redisplay_window (window, just_this_one, preserve_echo_area)
1739 int tem; 1739 int tem;
1740 int update_mode_line; 1740 int update_mode_line;
1741 struct Lisp_Char_Table *dp = window_display_table (w); 1741 struct Lisp_Char_Table *dp = window_display_table (w);
1742 int really_switched_buffer = 0;
1742 1743
1743 if (Z == Z_BYTE && lpoint != lpoint_byte) 1744 if (Z == Z_BYTE && lpoint != lpoint_byte)
1744 abort (); 1745 abort ();
@@ -1794,7 +1795,11 @@ redisplay_window (window, just_this_one, preserve_echo_area)
1794 /* Otherwise set up data on this window; select its buffer and point value */ 1795 /* Otherwise set up data on this window; select its buffer and point value */
1795 1796
1796 if (update_mode_line) 1797 if (update_mode_line)
1797 set_buffer_internal_1 (XBUFFER (w->buffer)); 1798 /* Really select the buffer, for the sake of buffer-local variables. */
1799 {
1800 set_buffer_internal_1 (XBUFFER (w->buffer));
1801 really_switched_buffer = 1;
1802 }
1798 else 1803 else
1799 set_buffer_temp (XBUFFER (w->buffer)); 1804 set_buffer_temp (XBUFFER (w->buffer));
1800 1805
@@ -1925,8 +1930,12 @@ redisplay_window (window, just_this_one, preserve_echo_area)
1925 { 1930 {
1926 Lisp_Object temp[3]; 1931 Lisp_Object temp[3];
1927 1932
1928 set_buffer_temp (old); 1933 if (!really_switched_buffer)
1929 set_buffer_internal_1 (XBUFFER (w->buffer)); 1934 {
1935 set_buffer_temp (old);
1936 set_buffer_internal_1 (XBUFFER (w->buffer));
1937 }
1938 really_switched_buffer = 1;
1930 update_mode_line = 1; 1939 update_mode_line = 1;
1931 w->update_mode_line = Qt; 1940 w->update_mode_line = Qt;
1932 if (! NILP (Vwindow_scroll_functions)) 1941 if (! NILP (Vwindow_scroll_functions))
@@ -2170,8 +2179,11 @@ redisplay_window (window, just_this_one, preserve_echo_area)
2170 /* Redisplay the mode line. Select the buffer properly for that. */ 2179 /* Redisplay the mode line. Select the buffer properly for that. */
2171 if (!update_mode_line) 2180 if (!update_mode_line)
2172 { 2181 {
2173 set_buffer_temp (old); 2182 if (!really_switched_buffer)
2174 set_buffer_internal_1 (XBUFFER (w->buffer)); 2183 {
2184 set_buffer_temp (old);
2185 set_buffer_internal_1 (XBUFFER (w->buffer));
2186 }
2175 update_mode_line = 1; 2187 update_mode_line = 1;
2176 w->update_mode_line = Qt; 2188 w->update_mode_line = Qt;
2177 } 2189 }
@@ -2357,7 +2369,18 @@ done:
2357 || (!NILP (w->column_number_displayed) 2369 || (!NILP (w->column_number_displayed)
2358 && XFASTINT (w->column_number_displayed) != current_column ())) 2370 && XFASTINT (w->column_number_displayed) != current_column ()))
2359 && height != XFASTINT (w->height)) 2371 && height != XFASTINT (w->height))
2360 display_mode_line (w); 2372 {
2373 FRAME_PTR oframe = selected_frame;
2374 if (!really_switched_buffer)
2375 {
2376 set_buffer_temp (old);
2377 set_buffer_internal_1 (XBUFFER (w->buffer));
2378 really_switched_buffer = 1;
2379 }
2380 selected_frame = f;
2381 display_mode_line (w);
2382 selected_frame = oframe;
2383 }
2361 if (! line_number_displayed 2384 if (! line_number_displayed
2362 && ! BUFFERP (w->base_line_pos)) 2385 && ! BUFFERP (w->base_line_pos))
2363 { 2386 {
@@ -2414,7 +2437,7 @@ done:
2414 } 2437 }
2415 2438
2416 TEMP_SET_PT_BOTH (opoint, opoint_byte); 2439 TEMP_SET_PT_BOTH (opoint, opoint_byte);
2417 if (update_mode_line) 2440 if (really_switched_buffer)
2418 set_buffer_internal_1 (old); 2441 set_buffer_internal_1 (old);
2419 else 2442 else
2420 set_buffer_temp (old); 2443 set_buffer_temp (old);