Mercurial > emacs
comparison src/minibuf.c @ 16475:2602c284eb11
(read_minibuf_unwind): Don't restore minibuf_window;
instead call choose_minibuf_frame.
(choose_minibuf_frame): Don't let any other frame keep its minibuf
window selected.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 26 Oct 1996 18:16:50 +0000 |
parents | 85a90affc238 |
children | 83d580ba04cf |
comparison
equal
deleted
inserted
replaced
16474:1b3c7561d286 | 16475:2602c284eb11 |
---|---|
123 | 123 |
124 Fset_window_buffer (selected_frame->minibuffer_window, | 124 Fset_window_buffer (selected_frame->minibuffer_window, |
125 XWINDOW (minibuf_window)->buffer); | 125 XWINDOW (minibuf_window)->buffer); |
126 minibuf_window = selected_frame->minibuffer_window; | 126 minibuf_window = selected_frame->minibuffer_window; |
127 } | 127 } |
128 | |
129 /* Make sure no other frame has a minibuffer as its selected window, | |
130 because the text would not be displayed in it, and that would be | |
131 confusing. */ | |
132 { | |
133 Lisp_Object tail, frame; | |
134 | |
135 FOR_EACH_FRAME (tail, frame) | |
136 if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))) | |
137 Fset_frame_selected_window (frame, Fframe_first_window (frame)); | |
138 } | |
128 } | 139 } |
129 | 140 |
130 DEFUN ("set-minibuffer-window", Fset_minibuffer_window, | 141 DEFUN ("set-minibuffer-window", Fset_minibuffer_window, |
131 Sset_minibuffer_window, 1, 1, 0, | 142 Sset_minibuffer_window, 1, 1, 0, |
132 "Specify which minibuffer window to use for the minibuffer.\n\ | 143 "Specify which minibuffer window to use for the minibuffer.\n\ |
487 minibuf_save_list = Fcdr (minibuf_save_list); | 498 minibuf_save_list = Fcdr (minibuf_save_list); |
488 Vminibuffer_history_variable = Fcar (minibuf_save_list); | 499 Vminibuffer_history_variable = Fcar (minibuf_save_list); |
489 minibuf_save_list = Fcdr (minibuf_save_list); | 500 minibuf_save_list = Fcdr (minibuf_save_list); |
490 Voverriding_local_map = Fcar (minibuf_save_list); | 501 Voverriding_local_map = Fcar (minibuf_save_list); |
491 minibuf_save_list = Fcdr (minibuf_save_list); | 502 minibuf_save_list = Fcdr (minibuf_save_list); |
492 minibuf_window = Fcar (minibuf_save_list); | 503 #if 0 |
504 temp = Fcar (minibuf_save_list); | |
505 if (FRAME_LIVE_P (XFRAME (WINDOW_FRAME (XWINDOW (temp))))) | |
506 minibuf_window = temp; | |
507 #endif | |
493 minibuf_save_list = Fcdr (minibuf_save_list); | 508 minibuf_save_list = Fcdr (minibuf_save_list); |
494 | 509 |
495 /* Erase the minibuffer we were using at this level. */ | 510 /* Erase the minibuffer we were using at this level. */ |
496 { | 511 { |
497 int count = specpdl_ptr - specpdl; | 512 int count = specpdl_ptr - specpdl; |
500 old_deactivate_mark = Vdeactivate_mark; | 515 old_deactivate_mark = Vdeactivate_mark; |
501 Ferase_buffer (); | 516 Ferase_buffer (); |
502 Vdeactivate_mark = old_deactivate_mark; | 517 Vdeactivate_mark = old_deactivate_mark; |
503 unbind_to (count, Qnil); | 518 unbind_to (count, Qnil); |
504 } | 519 } |
520 | |
521 /* Make the minibuffer follow the selected frame | |
522 (in case we are exiting a recursive minibuffer). */ | |
523 choose_minibuf_frame (); | |
505 | 524 |
506 /* Make sure minibuffer window is erased, not ignored. */ | 525 /* Make sure minibuffer window is erased, not ignored. */ |
507 windows_or_buffers_changed++; | 526 windows_or_buffers_changed++; |
508 XSETFASTINT (XWINDOW (window)->last_modified, 0); | 527 XSETFASTINT (XWINDOW (window)->last_modified, 0); |
509 XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0); | 528 XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0); |