aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann1999-09-13 11:13:47 +0000
committerGerd Moellmann1999-09-13 11:13:47 +0000
commita4aafc540436ff8da27547f6704e307fc23500f9 (patch)
tree122a6d051267f2f39b504bfbb9bfca97dcab93e1 /src
parent37b793e65b6becc17db69b3d95dfd9c5c88686cc (diff)
downloademacs-a4aafc540436ff8da27547f6704e307fc23500f9.tar.gz
emacs-a4aafc540436ff8da27547f6704e307fc23500f9.zip
(choose_minibuf_frame): Don't try to set the
mini-buffer window's buffer, if the buffer is invalid. (choose_minibuf_frame): Change for Lisp_Object selected_frame. (read_minibuf): Ditto.
Diffstat (limited to 'src')
-rw-r--r--src/minibuf.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/src/minibuf.c b/src/minibuf.c
index 99b16c19420..8df58b42206 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -138,17 +138,25 @@ extern Lisp_Object Qmouse_face;
138void 138void
139choose_minibuf_frame () 139choose_minibuf_frame ()
140{ 140{
141 if (selected_frame != 0 141 if (FRAMEP (selected_frame)
142 && !EQ (minibuf_window, selected_frame->minibuffer_window)) 142 && FRAME_LIVE_P (XFRAME (selected_frame))
143 && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
143 { 144 {
145 struct frame *sf = XFRAME (selected_frame);
146 Lisp_Object buffer;
147
144 /* I don't think that any frames may validly have a null minibuffer 148 /* I don't think that any frames may validly have a null minibuffer
145 window anymore. */ 149 window anymore. */
146 if (NILP (selected_frame->minibuffer_window)) 150 if (NILP (sf->minibuffer_window))
147 abort (); 151 abort ();
148 152
149 Fset_window_buffer (selected_frame->minibuffer_window, 153 /* Under X, we come here with minibuf_window being the
150 XWINDOW (minibuf_window)->buffer); 154 minibuffer window of the unused termcap window created in
151 minibuf_window = selected_frame->minibuffer_window; 155 init_window_once. That window doesn't have a buffer. */
156 buffer = XWINDOW (minibuf_window)->buffer;
157 if (BUFFERP (buffer))
158 Fset_window_buffer (sf->minibuffer_window, buffer);
159 minibuf_window = sf->minibuffer_window;
152 } 160 }
153 161
154 /* Make sure no other frame has a minibuffer as its selected window, 162 /* Make sure no other frame has a minibuffer as its selected window,
@@ -160,7 +168,7 @@ choose_minibuf_frame ()
160 168
161 FOR_EACH_FRAME (tail, frame) 169 FOR_EACH_FRAME (tail, frame)
162 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame)))) 170 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
163 && !(XFRAME (frame) == selected_frame 171 && !(EQ (frame, selected_frame)
164 && minibuf_level > 0)) 172 && minibuf_level > 0))
165 Fset_frame_selected_window (frame, Fframe_first_window (frame)); 173 Fset_frame_selected_window (frame, Fframe_first_window (frame));
166 } 174 }
@@ -283,7 +291,7 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
283 /* If the minibuffer window is on a different frame, save that 291 /* If the minibuffer window is on a different frame, save that
284 frame's configuration too. */ 292 frame's configuration too. */
285 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window)); 293 mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
286 if (XFRAME (mini_frame) != selected_frame) 294 if (!EQ (mini_frame, selected_frame))
287 record_unwind_protect (Fset_window_configuration, 295 record_unwind_protect (Fset_window_configuration,
288 Fcurrent_window_configuration (mini_frame)); 296 Fcurrent_window_configuration (mini_frame));
289 297
@@ -368,8 +376,8 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
368 } 376 }
369 } 377 }
370 378
371 if (XFRAME (mini_frame) != selected_frame) 379 if (!EQ (mini_frame, selected_frame))
372 Fredirect_frame_focus (Fselected_frame (), mini_frame); 380 Fredirect_frame_focus (selected_frame, mini_frame);
373 381
374 Vminibuf_scroll_window = selected_window; 382 Vminibuf_scroll_window = selected_window;
375 Fset_window_buffer (minibuf_window, Fcurrent_buffer ()); 383 Fset_window_buffer (minibuf_window, Fcurrent_buffer ());
@@ -443,7 +451,7 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
443 XWINDOW (minibuf_window)->cursor.hpos = 0; 451 XWINDOW (minibuf_window)->cursor.hpos = 0;
444 XWINDOW (minibuf_window)->cursor.x = 0; 452 XWINDOW (minibuf_window)->cursor.x = 0;
445 XWINDOW (minibuf_window)->must_be_updated_p = 1; 453 XWINDOW (minibuf_window)->must_be_updated_p = 1;
446 update_frame (selected_frame, 1, 1); 454 update_frame (XFRAME (selected_frame), 1, 1);
447 if (rif && rif->flush_display) 455 if (rif && rif->flush_display)
448 rif->flush_display (XFRAME (XWINDOW (minibuf_window)->frame)); 456 rif->flush_display (XFRAME (XWINDOW (minibuf_window)->frame));
449 } 457 }