aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer1995-05-30 06:53:08 +0000
committerKarl Heuer1995-05-30 06:53:08 +0000
commitb06602395f523eee027a2fd7f0b8e1b70b86dfd4 (patch)
tree38f2912d311120b74ee2bee8c7e01c4def2e72c4 /src
parent0006272a97c3bcb3174027b9d085103452a76a38 (diff)
downloademacs-b06602395f523eee027a2fd7f0b8e1b70b86dfd4.tar.gz
emacs-b06602395f523eee027a2fd7f0b8e1b70b86dfd4.zip
(make_frame_without_minibuffer): New arg DISPLAY.
If there's no minibuffer frame to use, create one.
Diffstat (limited to 'src')
-rw-r--r--src/frame.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/frame.c b/src/frame.c
index ab4713b2d66..3591ef4f20b 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -256,34 +256,37 @@ make_frame (mini_p)
256 default (the global minibuffer). */ 256 default (the global minibuffer). */
257 257
258struct frame * 258struct frame *
259make_frame_without_minibuffer (mini_window, kb) 259make_frame_without_minibuffer (mini_window, kb, display)
260 register Lisp_Object mini_window; 260 register Lisp_Object mini_window;
261 KBOARD *kb; 261 KBOARD *kb;
262 Lisp_Object display;
262{ 263{
263 register struct frame *f; 264 register struct frame *f;
264 265
265 /* Choose the minibuffer window to use. */ 266 if (!NILP (mini_window))
266 if (NILP (mini_window)) 267 CHECK_LIVE_WINDOW (mini_window, 0);
267 {
268 if (!FRAMEP (kb->Vdefault_minibuffer_frame))
269 error ("default-minibuffer-frame must be set when creating minibufferless frames");
270 if (! FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame)))
271 error ("default-minibuffer-frame must be a live frame");
272 mini_window = XFRAME (kb->Vdefault_minibuffer_frame)->minibuffer_window;
273 }
274 else
275 {
276 CHECK_LIVE_WINDOW (mini_window, 0);
277 }
278 268
279#ifdef MULTI_KBOARD 269#ifdef MULTI_KBOARD
280 if (XFRAME (XWINDOW (mini_window)->frame)->kboard != kb) 270 if (!NILP (mini_window)
271 && XFRAME (XWINDOW (mini_window)->frame)->kboard != kb)
281 error ("frame and minibuffer must be on the same display"); 272 error ("frame and minibuffer must be on the same display");
282#endif 273#endif
283 274
284 /* Make a frame containing just a root window. */ 275 /* Make a frame containing just a root window. */
285 f = make_frame (0); 276 f = make_frame (0);
286 277
278 if (NILP (mini_window))
279 {
280 /* Use default-minibuffer-frame if possible. */
281 if (!FRAMEP (kb->Vdefault_minibuffer_frame)
282 || ! FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame)))
283 {
284 /* If there's no minibuffer frame to use, create one. */
285 kb->Vdefault_minibuffer_frame
286 = call1 (intern ("make-initial-minibuffer-frame"), display);
287 }
288 mini_window = XFRAME (kb->Vdefault_minibuffer_frame)->minibuffer_window;
289 }
287 /* Install the chosen minibuffer window, with proper buffer. */ 290 /* Install the chosen minibuffer window, with proper buffer. */
288 f->minibuffer_window = mini_window; 291 f->minibuffer_window = mini_window;
289 Fset_window_buffer (mini_window, 292 Fset_window_buffer (mini_window,