Lisp_Object Vemacs_iconified;
Lisp_Object Vframe_list;
Lisp_Object Vterminal_frame;
-Lisp_Object Vdefault_minibuffer_frame;
Lisp_Object Vdefault_frame_alist;
/* Evaluate this expression to rebuild the section of syms_of_frame
default (the global minibuffer). */
struct frame *
-make_frame_without_minibuffer (mini_window)
+make_frame_without_minibuffer (mini_window, kb)
register Lisp_Object mini_window;
+ KBOARD *kb;
{
register struct frame *f;
/* Choose the minibuffer window to use. */
if (NILP (mini_window))
{
- if (!FRAMEP (Vdefault_minibuffer_frame))
+ if (!FRAMEP (kb->Vdefault_minibuffer_frame))
error ("default-minibuffer-frame must be set when creating minibufferless frames");
- if (! FRAME_LIVE_P (XFRAME (Vdefault_minibuffer_frame)))
+ if (! FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame)))
error ("default-minibuffer-frame must be a live frame");
- mini_window = XFRAME (Vdefault_minibuffer_frame)->minibuffer_window;
+ mini_window = XFRAME (kb->Vdefault_minibuffer_frame)->minibuffer_window;
}
else
{
CHECK_LIVE_WINDOW (mini_window, 0);
}
+#ifdef MULTI_KBOARD
+ if (XFRAME (XWINDOW (mini_window)->frame)->kboard != kb)
+ error ("frame and minibuffer must be on the same display");
+#endif
+
/* Make a frame containing just a root window. */
f = make_frame (0);
f->visible = 1; /* FRAME_SET_VISIBLE wd set frame_garbaged. */
f->async_visible = 1; /* Don't let visible be cleared later. */
f->display.nothing = 1; /* Nonzero means frame isn't deleted. */
- XSETFRAME (Vterminal_frame, f);
return f;
}
#else /* ! 0 */
/* Instead, apply it only to the frame we're pointing to. */
#ifdef HAVE_X_WINDOWS
- if (track)
+ if (track && FRAME_X_P (XFRAME (frame)))
{
Lisp_Object focus, xfocus;
- xfocus = x_get_focus_frame ();
+ xfocus = x_get_focus_frame (XFRAME (frame));
if (FRAMEP (xfocus))
{
focus = FRAME_FOCUS_FRAME (XFRAME (xfocus));
switching means we must redisplay the whole thing. */
windows_or_buffers_changed++;
SET_FRAME_GARBAGED (XFRAME (frame));
+ XSETFRAME (Vterminal_frame, frame);
}
selected_frame = XFRAME (frame);
/* If we've deleted Vdefault_minibuffer_frame, try to find another
one. Prefer minibuffer-only frames, but also notice frames
with other windows. */
- if (EQ (frame, Vdefault_minibuffer_frame))
+ if (EQ (frame, FRAME_KBOARD (f)->Vdefault_minibuffer_frame))
{
Lisp_Object frames;
if (NILP (frame_with_minibuf))
abort ();
- Vdefault_minibuffer_frame = frame_with_minibuf;
+ FRAME_KBOARD (f)->Vdefault_minibuffer_frame = frame_with_minibuf;
}
return Qnil;
}
-DEFUN ("raise-frame", Fraise_frame, Sraise_frame, 1, 1, "",
+DEFUN ("raise-frame", Fraise_frame, Sraise_frame, 0, 1, "",
"Bring FRAME to the front, so it occludes any frames it overlaps.\n\
If FRAME is invisible, make it visible.\n\
If you don't specify a frame, the selected frame is used.\n\
}
/* Should we have a corresponding function called Flower_Power? */
-DEFUN ("lower-frame", Flower_frame, Slower_frame, 1, 1, "",
+DEFUN ("lower-frame", Flower_frame, Slower_frame, 0, 1, "",
"Send FRAME to the back, so it is occluded by any frames that overlap it.\n\
If you don't specify a frame, the selected frame is used.\n\
If Emacs is displaying on an ordinary terminal or some other device which\n\
#endif
if (frame_rehighlight_hook)
- (*frame_rehighlight_hook) ();
+ (*frame_rehighlight_hook) (XFRAME (frame));
return Qnil;
}
"Non-nil if all of emacs is iconified and frame updates are not needed.");
Vemacs_iconified = Qnil;
- DEFVAR_LISP ("default-minibuffer-frame", &Vdefault_minibuffer_frame,
+ DEFVAR_KBOARD ("default-minibuffer-frame", Vdefault_minibuffer_frame,
"Minibufferless frames use this frame's minibuffer.\n\
\n\
Emacs cannot create minibufferless frames unless this is set to an\n\
this variable doesn't necessarily say anything meaningful about the\n\
current set of frames, or where the minibuffer is currently being\n\
displayed.");
- Vdefault_minibuffer_frame = Qnil;
DEFVAR_LISP ("default-frame-alist", &Vdefault_frame_alist,
"Alist of default values for frame creation.\n\