diff options
| author | Karl Heuer | 1995-05-30 06:53:08 +0000 |
|---|---|---|
| committer | Karl Heuer | 1995-05-30 06:53:08 +0000 |
| commit | b06602395f523eee027a2fd7f0b8e1b70b86dfd4 (patch) | |
| tree | 38f2912d311120b74ee2bee8c7e01c4def2e72c4 /src | |
| parent | 0006272a97c3bcb3174027b9d085103452a76a38 (diff) | |
| download | emacs-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.c | 33 |
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 | ||
| 258 | struct frame * | 258 | struct frame * |
| 259 | make_frame_without_minibuffer (mini_window, kb) | 259 | make_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, |