#define FLOAT_SUPPORT
#endif
-#ifdef MULTI_FRAME
-#define FRAME_SUPPORT ${lispsource}frame.elc
-#else
-#define FRAME_SUPPORT
-#endif
-
#ifdef HAVE_MOUSE
#define MOUSE_SUPPORT ${lispsource}menu-bar.elc ${lispsource}mouse.elc \
${lispsource}select.elc ${lispsource}scroll-bar.elc
FACE_SUPPORT \
MOUSE_SUPPORT \
FLOAT_SUPPORT \
- FRAME_SUPPORT \
+ ${lispsource}frame.elc\
X_WINDOWS_SUPPORT \
${lispsource}help.elc \
${lispsource}indent.elc \
objptr = (Lisp_Object *) &ptr1->contents[COMPILED_CONSTANTS];
goto loop;
}
-#ifdef MULTI_FRAME
else if (GC_FRAMEP (obj))
{
/* See comment above under Lisp_Vector for why this is volatile. */
mark_object (&ptr->menu_bar_vector);
mark_object (&ptr->buffer_predicate);
}
-#endif /* MULTI_FRAME */
else if (GC_BOOL_VECTOR_P (obj))
{
register struct Lisp_Vector *ptr = XVECTOR (obj);
continue;
if (XSTRING (XBUFFER (buf)->name)->data[0] == ' ')
continue;
-#ifdef MULTI_FRAME
/* If the selected frame has a buffer_predicate,
disregard buffers that don't fit the predicate. */
tem = frame_buffer_predicate ();
if (NILP (tem))
continue;
}
-#endif
if (NILP (visible_ok))
tem = Fget_buffer_window (buf, Qt);
return Qchar_table;
if (GC_BOOL_VECTOR_P (object))
return Qbool_vector;
-
-#ifdef MULTI_FRAME
if (GC_FRAMEP (object))
return Qframe;
-#endif
return Qvector;
#ifdef LISP_FLOAT_TYPE
struct frame_glyphs
{
-#ifdef MULTI_FRAME
struct frame *frame; /* Frame these glyphs belong to. */
-#endif /* MULTI_FRAME */
int height;
int width;
the address of the_only_frame. */
FRAME_PTR last_nonminibuf_frame;
-/* In a single-frame version, the information that would otherwise
- exist inside frame objects lives in the following structure instead.
-
- NOTE: the_only_frame is not checked for garbage collection; don't
- store collectible objects in any of its fields!
-
- You're not/The only frame in town/... */
-
-#ifndef MULTI_FRAME
-struct frame the_only_frame;
-#endif
-
/* This is a vector, made larger whenever it isn't large enough,
which is used inside `update_frame' to hold the old contents
of the FRAME_PHYS_LINES of the frame being updated. */
int delayed_size_change; /* 1 means SIGWINCH happened when not safe. */
\f
-#ifdef MULTI_FRAME
-
DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, 0,
"Clear frame FRAME and output again what is supposed to appear on it.")
(frame)
Fredraw_frame (frame);
}
-#else
-
-DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- update_begin (0);
- set_terminal_modes ();
- clear_frame ();
- update_end (0);
- fflush (stdout);
- clear_frame_records (0);
- windows_or_buffers_changed++;
- /* Mark all windows as INaccurate,
- so that every window will have its redisplay done. */
- mark_window_display_accurate (FRAME_ROOT_WINDOW (0), 0);
- return Qnil;
-}
-
-#endif
-
DEFUN ("redraw-display", Fredraw_display, Sredraw_display, 0, 0, "",
"Clear and redisplay all visible frames.")
()
\f
syms_of_display ()
{
-#ifdef MULTI_FRAME
defsubr (&Sredraw_frame);
-#endif
defsubr (&Sredraw_display);
defsubr (&Sframe_or_buffer_changed_p);
defsubr (&Sopen_termscript);
(setq symbol-list (cdr symbol-list)))))
*/
-/* We need most of these symbols even if not MULTI_FRAME;
- easiest to define them all, all of the time. */
/*&&& symbols declared here &&&*/
Lisp_Object Qframep;
Lisp_Object Qframe_live_p;
/* Right now, menu bars don't work properly in minibuf-only frames;
most of the commands try to apply themselves to the minibuffer
- frame itslef, and get an error because you can't switch buffers
+ frame itself, and get an error because you can't switch buffers
in or split the minibuffer window. */
if (FRAME_MINIBUF_ONLY_P (f))
return;
}
}
\f
-#ifdef MULTI_FRAME
-
#include "buffer.h"
/* These help us bind and responding to switch-frame events. */
initial_define_lispy_key (global_map, "iconify-frame", "ignore-event");
initial_define_lispy_key (global_map, "make-frame-visible", "ignore-event");
}
-\f
-#else /* not MULTI_FRAME */
-
-/* If we're not using multi-frame stuff, we still need to provide some
- support functions. */
-
-/* Unless this function is defined, providing set-frame-height and
- set-frame-width doesn't help compatibility any, since they both
- want this as their first argument. */
-DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- ()
-{
- /* For your possible information, this code is unfolded into the
- second WINDOW_FRAME in frame.h. */
- Lisp_Object tem;
- XSETFASTINT (tem, 0);
- return tem;
-}
-
-DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
- Sactive_minibuffer_window, 0, 0, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- ()
-{
- return minibuf_level ? minibuf_window : Qnil;
-}
-
-DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (window)
- Lisp_Object window;
-{
- /* For your possible information, this code is unfolded into the
- second WINDOW_FRAME in frame.h. */
- Lisp_Object tem;
- XSETFASTINT (tem, 0);
- return tem;
-}
-
-DEFUN ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0,
- 0)
- (frame)
- Lisp_Object frame;
-{
- Lisp_Object w;
-
- w = FRAME_ROOT_WINDOW (selected_frame);
-
- while (NILP (XWINDOW (w)->buffer))
- {
- if (! NILP (XWINDOW (w)->hchild))
- w = XWINDOW (w)->hchild;
- else if (! NILP (XWINDOW (w)->vchild))
- w = XWINDOW (w)->vchild;
- else
- abort ();
- }
- return w;
-}
-
-DEFUN ("framep", Fframep, Sframep, 1, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (object)
- Lisp_Object object;
-{
-#ifdef MSDOS
- if (FRAME_X_P (object))
- return intern ("pc");
-#endif
- return Qnil;
-}
-
-DEFUN ("set-frame-height", Fset_frame_height, Sset_frame_height, 2, 3, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame, rows, pretend)
- Lisp_Object frame, rows, pretend;
-{
- CHECK_NUMBER (rows, 0);
-
- change_frame_size (0, XINT (rows), 0, !NILP (pretend), 0);
- return Qnil;
-}
-
-DEFUN ("set-frame-width", Fset_frame_width, Sset_frame_width, 2, 3, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame, cols, pretend)
- Lisp_Object frame, cols, pretend;
-{
- CHECK_NUMBER (cols, 0);
-
- change_frame_size (0, 0, XINT (cols), !NILP (pretend), 0);
- return Qnil;
-}
-
-DEFUN ("set-frame-size", Fset_frame_size, Sset_frame_size, 3, 3, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame, cols, rows)
- Lisp_Object frame, cols, rows;
-{
- CHECK_NUMBER (cols, 2);
- CHECK_NUMBER (rows, 1);
-
- change_frame_size (0, XINT (rows), XINT (cols), 0, 0);
-
- return Qnil;
-}
-\f
-DEFUN ("frame-height", Fframe_height, Sframe_height, 0, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return make_number (FRAME_HEIGHT (selected_frame));
-}
-
-DEFUN ("frame-width", Fframe_width, Sframe_width, 0, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return make_number (FRAME_WIDTH (selected_frame));
-}
-
-DEFUN ("frame-char-height", Fframe_char_height, Sframe_char_height,
- 0, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return make_number (1);
-}
-
-
-DEFUN ("frame-char-width", Fframe_char_width, Sframe_char_width,
- 0, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return make_number (1);
-}
-
-DEFUN ("frame-pixel-height", Fframe_pixel_height,
- Sframe_pixel_height, 0, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return make_number (FRAME_HEIGHT (f));
-}
-
-DEFUN ("frame-pixel-width", Fframe_pixel_width,
- Sframe_pixel_width, 0, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return make_number (FRAME_WIDTH (f));
-}
-
-/* These are for backward compatibility with Emacs 18. */
-
-DEFUN ("set-screen-height", Fset_screen_height, Sset_screen_height, 1, 2, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (lines, pretend)
- Lisp_Object lines, pretend;
-{
- CHECK_NUMBER (lines, 0);
-
- change_frame_size (0, XINT (lines), 0, !NILP (pretend), 0);
- return Qnil;
-}
-
-DEFUN ("set-screen-width", Fset_screen_width, Sset_screen_width, 1, 2, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (cols, pretend)
- Lisp_Object cols, pretend;
-{
- CHECK_NUMBER (cols, 0);
-
- change_frame_size (0, 0, XINT (cols), !NILP (pretend), 0);
- return Qnil;
-}
-
-DEFUN ("mouse-position", Fmouse_position, Smouse_position, 0, 0, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- ()
-{
-#ifdef HAVE_MOUSE
- if (mouse_position_hook)
- {
- FRAME_PTR f;
- Lisp_Object lispy_dummy;
- enum scroll_bar_part party_dummy;
- Lisp_Object x, y;
- unsigned long long_dummy;
-
- (*mouse_position_hook) (&f, 0,
- &lispy_dummy, &party_dummy,
- &x, &y,
- &long_dummy);
- return Fcons (Fselected_frame (), Fcons (x, y));
- }
-#endif
- return Fcons (Qnil, Fcons (Qnil, Qnil));
-}
-\f
-void
-store_in_alist (alistptr, prop, val)
- Lisp_Object *alistptr, val;
- Lisp_Object prop;
-{
- register Lisp_Object tem;
-
- tem = Fassq (prop, *alistptr);
- if (EQ (tem, Qnil))
- *alistptr = Fcons (Fcons (prop, val), *alistptr);
- else
- Fsetcdr (tem, val);
-}
-
-DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- Lisp_Object alist;
- FRAME_PTR f;
- int height, width;
-
- if (EQ (frame, Qnil))
- f = selected_frame;
- else
- {
- CHECK_FRAME (frame, 0);
- f = XFRAME (frame);
- }
-
- if (!FRAME_LIVE_P (f))
- return Qnil;
-
- alist = Qnil;
-#ifdef MSDOS
- if (FRAME_X_P (f))
- {
- static char *colornames[16] =
- {
- "black", "blue", "green", "cyan", "red", "magenta", "brown",
- "lightgray", "darkgray", "lightblue", "lightgreen", "lightcyan",
- "lightred", "lightmagenta", "yellow", "white"
- };
- store_in_alist (&alist, intern ("foreground-color"),
- build_string (colornames[FRAME_FOREGROUND_PIXEL (f)]));
- store_in_alist (&alist, intern ("background-color"),
- build_string (colornames[FRAME_BACKGROUND_PIXEL (f)]));
- }
-#endif
- store_in_alist (&alist, intern ("font"), build_string ("default"));
- store_in_alist (&alist, Qname, build_string ("emacs"));
- height = (FRAME_NEW_HEIGHT (f) ? FRAME_NEW_HEIGHT (f) : FRAME_HEIGHT (f));
- store_in_alist (&alist, Qheight, make_number (height));
- width = (FRAME_NEW_WIDTH (f) ? FRAME_NEW_WIDTH (f) : FRAME_WIDTH (f));
- store_in_alist (&alist, Qwidth, make_number (width));
- store_in_alist (&alist, Qmodeline, (FRAME_WANTS_MODELINE_P (f) ? Qt : Qnil));
- store_in_alist (&alist, Qminibuffer, FRAME_MINIBUF_WINDOW (f));
- store_in_alist (&alist, Qunsplittable, (FRAME_NO_SPLIT_P (f) ? Qt : Qnil));
- store_in_alist (&alist, Qmenu_bar_lines, (FRAME_MENU_BAR_LINES (f)));
-
- return alist;
-}
-
-DEFUN ("modify-frame-parameters", Fmodify_frame_parameters,
- Smodify_frame_parameters, 2, 2, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame, alist)
- Lisp_Object frame, alist;
-{
- Lisp_Object tail, elt, prop, val;
- FRAME_PTR f;
-
- if (NILP (frame))
- f = selected_frame;
- else
- {
- CHECK_LIVE_FRAME (frame, 0);
- f = XFRAME (frame);
- }
-
-#ifdef MSDOS
- if (FRAME_X_P (frame))
- IT_set_frame_parameters (XFRAME (frame), alist);
- else
-#endif
- for (tail = alist; !EQ (tail, Qnil); tail = Fcdr (tail))
- {
- elt = Fcar (tail);
- prop = Fcar (elt);
- val = Fcdr (elt);
- if (EQ (prop, Qmenu_bar_lines))
- set_menu_bar_lines (f, val, make_number (FRAME_MENU_BAR_LINES (f)));
- }
-
- return Qnil;
-}
-
-DEFUN ("frame-live-p", Fframe_live_p, Sframe_live_p, 1, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return Qt;
-}
-
-DEFUN ("frame-visible-p", Fframe_visible_p, Sframe_visible_p, 1, 1, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- (frame)
- Lisp_Object frame;
-{
- return Qt;
-}
-
-DEFUN ("frame-list", Fframe_list, Sframe_list, 0, 0, 0,
- /* Don't confuse make-docfile by having two doc strings for this function.
- make-docfile does not pay attention to #if, for good reason! */
- 0)
- ()
-{
- return Fcons (Fselected_frame (), Qnil);
-}
-\f
-syms_of_frame ()
-{
- syms_of_frame_1 ();
-
- DEFVAR_LISP ("terminal-frame", &Vterminal_frame,
- /* Don't confuse make-docfile by having two doc strings for this variable.
- make-docfile does not pay attention to #if, for good reason! */
- 0);
- XSETFASTINT (Vterminal_frame, 0);
-
- defsubr (&Sselected_frame);
- defsubr (&Sactive_minibuffer_window);
- defsubr (&Swindow_frame);
- defsubr (&Sframe_first_window);
- defsubr (&Sframep);
- defsubr (&Sframe_char_height);
- defsubr (&Sframe_char_width);
- defsubr (&Sframe_pixel_height);
- defsubr (&Sframe_pixel_width);
- defsubr (&Sset_frame_height);
- defsubr (&Sset_frame_width);
- defsubr (&Sset_frame_size);
- defsubr (&Sset_screen_height);
- defsubr (&Sset_screen_width);
- defsubr (&Sframe_height);
- Ffset (intern ("screen-height"), intern ("frame-height"));
- defsubr (&Sframe_width);
- Ffset (intern ("screen-width"), intern ("frame-width"));
- defsubr (&Smouse_position);
- Ffset (intern ("mouse-pixel-position"), intern ("mouse-position"));
- defsubr (&Sframe_parameters);
- defsubr (&Smodify_frame_parameters);
- defsubr (&Sframe_live_p);
- defsubr (&Sframe_visible_p);
- defsubr (&Sframe_list);
-
-#ifdef MSDOS
- /* A comment in dispnew.c says the_only_frame is not protected. */
- the_only_frame.face_alist = Qnil;
- staticpro (&the_only_frame.face_alist);
- the_only_frame.menu_bar_items = Qnil;
- staticpro (&the_only_frame.menu_bar_items);
- the_only_frame.menu_bar_vector = Qnil;
- staticpro (&the_only_frame.menu_bar_vector);
- the_only_frame.menu_bar_items = menu_bar_items (Qnil);
-#endif
-}
-
-keys_of_frame ()
-{
-}
-
-#endif /* not MULTI_FRAME */
extern int message_buf_print;
\f
-/* The structure representing a frame.
-
- We declare this even if MULTI_FRAME is not defined, because when
- we lack multi-frame support, we use one instance of this structure
- to represent the one frame we support. This is cleaner than
- having miscellaneous random variables scattered about. */
+/* The structure representing a frame. */
enum output_method
{ output_termcap, output_x_window, output_msdos_raw, output_win32 };
char mouse_moved;
};
-#ifdef MULTI_KBOARD /* Note that MULTI_KBOARD implies MULTI_FRAME */
+#ifdef MULTI_KBOARD
#define FRAME_KBOARD(f) ((f)->kboard)
#else
#define FRAME_KBOARD(f) (&the_only_kboard)
#endif
-#ifdef MULTI_FRAME
-
typedef struct frame *FRAME_PTR;
#define XFRAME(p) ((struct frame *) XPNTR (p))
should be a Lisp_Object too; it is used to iterate through the
Vframe_list.
- If MULTI_FRAME isn't defined, then this loop expands to something which
- executes the statement once. */
+ This macro is a holdover from a time when multiple frames weren't always
+ supported. An alternate definition of the macro would expand to
+ something which executes the statement once. */
#define FOR_EACH_FRAME(list_var, frame_var) \
for ((list_var) = Vframe_list; \
(CONSP (list_var) \
extern Lisp_Object Vterminal_frame;
\f
-#else /* not MULTI_FRAME */
-
-/* These definitions are used in a single-frame version of Emacs. */
-
-/* A frame we use to store all the data concerning the screen when we
- don't have multiple frames. Remember, if you store any data in it
- which needs to be protected from GC, you should staticpro that
- element explicitly. */
-extern struct frame the_only_frame;
-
-typedef struct frame *FRAME_PTR;
-#ifdef __GNUC__
-/* A function call for always getting 0 is overkill, so... */
-#define WINDOW_FRAME(w) ({ Lisp_Object tem; XSETFASTINT (tem, 0); tem; })
-#else
-#define WINDOW_FRAME(w) (Fselected_frame ())
-#endif
-#define XSETFRAME(p, v) (p = WINDOW_FRAME (***bogus***))
-#define XFRAME(frame) (&the_only_frame)
-
-extern FRAME_PTR selected_frame;
-extern FRAME_PTR last_nonminibuf_frame;
-
-#define FRAME_LIVE_P(f) 1
-#define FRAME_MSDOS_P(f) 0
-#ifdef MSDOS
-/* The following definitions could also be used in the non-MSDOS case,
- but the constants below lead to better code. */
-#define FRAME_TERMCAP_P(f) (the_only_frame.output_method == output_termcap)
-#define FRAME_X_P(f) (the_only_frame.output_method != output_termcap)
-#else
-#define FRAME_TERMCAP_P(f) 1
-#define FRAME_X_P(f) 0
-#endif
-#define FRAME_WINDOW_P(f) FRAME_X_P (f)
-#define FRAME_MINIBUF_ONLY_P(f) 0
-#define FRAME_HAS_MINIBUF_P(f) 1
-#define FRAME_CURRENT_GLYPHS(f) (the_only_frame.current_glyphs)
-#define FRAME_DESIRED_GLYPHS(f) (the_only_frame.desired_glyphs)
-#define FRAME_TEMP_GLYPHS(f) (the_only_frame.temp_glyphs)
-#define FRAME_HEIGHT(f) (the_only_frame.height)
-#define FRAME_WIDTH(f) (the_only_frame.width)
-#define FRAME_NEW_HEIGHT(f) (the_only_frame.new_height)
-#define FRAME_NEW_WIDTH(f) (the_only_frame.new_width)
-#define FRAME_MENU_BAR_LINES(f) (the_only_frame.menu_bar_lines)
-#define FRAME_CURSOR_X(f) (the_only_frame.cursor_x)
-#define FRAME_CURSOR_Y(f) (the_only_frame.cursor_y)
-#define FRAME_SET_VISIBLE(f,p) (p)
-#define FRAME_VISIBLE_P(f) 1
-#define SET_FRAME_GARBAGED(f) (frame_garbaged = 1)
-#define FRAME_GARBAGED_P(f) (frame_garbaged)
-#define FRAME_NO_SPLIT_P(f) 0
-#define FRAME_WANTS_MODELINE_P(f) 1
-#define FRAME_ICONIFIED_P(f) 0
-#define FRAME_WINDOW_SIZES_CHANGED(f) the_only_frame.window_sizes_changed
-#define FRAME_MINIBUF_WINDOW(f) (minibuf_window)
-#define FRAME_ROOT_WINDOW(f) (the_only_frame.root_window)
-#define FRAME_SELECTED_WINDOW(f) (selected_window)
-#define SET_GLYPHS_FRAME(glyphs,frame) do ; while (0)
-#define FRAME_INSERT_COST(frame) (the_only_frame.insert_line_cost)
-#define FRAME_DELETE_COST(frame) (the_only_frame.delete_line_cost)
-#define FRAME_INSERTN_COST(frame) (the_only_frame.insert_n_lines_cost)
-#define FRAME_DELETEN_COST(frame) (the_only_frame.delete_n_lines_cost)
-#define FRAME_MESSAGE_BUF(f) (the_only_frame.message_buf)
-#define FRAME_SCROLL_BOTTOM_VPOS(f) (the_only_frame.scroll_bottom_vpos)
-#define FRAME_FOCUS_FRAME(f) (Qnil)
-#define FRAME_CAN_HAVE_SCROLL_BARS(f) (the_only_frame.can_have_scroll_bars)
-#define FRAME_HAS_VERTICAL_SCROLL_BARS(f) \
- (the_only_frame.has_vertical_scroll_bars)
-#define FRAME_SCROLL_BAR_PIXEL_WIDTH(f) (the_only_frame.scroll_bar_pixel_width)
-#define FRAME_SCROLL_BAR_COLS(f) (the_only_frame.scroll_bar_cols)
-#define FRAME_SCROLL_BARS(f) (the_only_frame.scroll_bars)
-#define FRAME_CONDEMNED_SCROLL_BARS(f) (the_only_frame.condemned_scroll_bars)
-#define FRAME_MENU_BAR_ITEMS(f) (the_only_frame.menu_bar_items)
-#define FRAME_COST_BAUD_RATE(f) (the_only_frame.cost_calculation_baud_rate)
-
-/* See comments in definition above. */
-#define FRAME_SAMPLE_VISIBILITY(f) (0)
-
-#define CHECK_FRAME(x, i) do; while (0)
-#define CHECK_LIVE_FRAME(x, y) do; while (0)
-
-/* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a
- `for' loop which iterates over the elements of Vframe_list. The
- loop will set FRAME_VAR, a Lisp_Object, to each frame in
- Vframe_list in succession and execute the statement. LIST_VAR
- should be a Lisp_Object too; it is used to iterate through the
- Vframe_list.
-
- If MULTI_FRAME _is_ defined, then this loop expands to a real
- `for' loop which traverses Vframe_list using LIST_VAR and
- FRAME_VAR. */
-#define FOR_EACH_FRAME(list_var, frame_var) \
- for (list_var = Qt; frame_var = WINDOW_FRAME (***bogus***), ! NILP (list_var); list_var = Qnil)
-
-#endif /* not MULTI_FRAME */
-
-\f
-/* Device- and MULTI_FRAME-independent scroll bar stuff. */
+/* Device-independent scroll bar stuff. */
/* Return the starting column (zero-based) of the vertical scroll bar
for window W. The column before this one is the last column we can
/* The buffer that was current when the last command was started. */
Lisp_Object last_point_position_buffer;
-#ifdef MULTI_FRAME
/* The frame in which the last input event occurred, or Qmacro if the
last event came from a macro. We use this to determine when to
generate switch-frame events. This may be cleared by functions
like Fselect_frame, to make sure that a switch-frame event is
generated by the next character. */
Lisp_Object internal_last_event_frame;
-#endif
/* A user-visible version of the above, intended to allow users to
figure out where the last event came from, if the event doesn't
#endif /* C_ALLOCA */
#if 0
-#ifdef MULTI_FRAME
/* Select the frame that the last event came from. Usually,
switch-frame events will take care of this, but if some lisp
code swallows a switch-frame event, we'll fix things up here.
if (FRAMEP (internal_last_event_frame)
&& XFRAME (internal_last_event_frame) != selected_frame)
Fselect_frame (internal_last_event_frame, Qnil);
-#endif
#endif
/* If it has changed current-menubar from previous value,
really recompute the menubar from the value. */
if (!NILP (Vexecuting_macro))
{
-#ifdef MULTI_FRAME
/* We set this to Qmacro; since that's not a frame, nobody will
try to switch frames on us, and the selected window will
remain unchanged.
events read from a macro should never cause a new frame to be
selected. */
Vlast_event_frame = internal_last_event_frame = Qmacro;
-#endif
/* Exit the macro if we are at the end.
Also, some things replace the macro with t
if (_setjmp (local_getcjmp))
{
XSETINT (c, quit_char);
-#ifdef MULTI_FRAME
XSETFRAME (internal_last_event_frame, selected_frame);
Vlast_event_frame = internal_last_event_frame;
-#endif
/* If we report the quit char as an event,
don't do so more than once. */
if (!NILP (Vinhibit_quit))
if (NILP (current_kboard->kbd_queue))
current_kboard->kbd_queue_has_data = 0;
input_pending = readable_events (0);
-#ifdef MULTI_FRAME
if (EVENT_HAS_PARAMETERS (c)
&& EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qswitch_frame))
internal_last_event_frame = XCONS (XCONS (c)->cdr)->car;
Vlast_event_frame = internal_last_event_frame;
-#endif
}
}
}
#endif
-#ifdef MULTI_FRAME
/* If this results in a quit_char being returned to Emacs as
input, set Vlast_event_frame properly. If this doesn't
get returned to Emacs as an event, the next event read
internal_last_event_frame = focus;
Vlast_event_frame = focus;
}
-#endif
last_event_timestamp = event->timestamp;
interrupt_signal ();
time, and leave the event in the queue for next time. */
else
{
-#ifdef MULTI_FRAME
Lisp_Object frame;
Lisp_Object focus;
&& XFRAME (frame) != selected_frame)
obj = make_lispy_switch_frame (frame);
internal_last_event_frame = frame;
-#endif /* MULTI_FRAME */
/* If we didn't decide to make a switch-frame event, go ahead
and build a real event from the queue entry. */
obj = Qnil;
-#ifdef MULTI_FRAME
/* Decide if we should generate a switch-frame event. Don't
generate switch-frame events for motion outside of all Emacs
frames. */
obj = make_lispy_switch_frame (frame);
internal_last_event_frame = frame;
}
-#endif
/* If we didn't decide to make a switch-frame event, go ahead and
return a mouse-motion event. */
input_pending = readable_events (0);
-#ifdef MULTI_FRAME
Vlast_event_frame = internal_last_event_frame;
-#endif
return (obj);
}
Lisp_Object x, y;
unsigned long time;
{
-#ifdef MULTI_FRAME
/* Is it a scroll bar movement? */
if (frame && ! NILP (bar_window))
{
/* Or is it an ordinary mouse movement? */
else
-#endif /* MULTI_FRAME */
{
int area;
Lisp_Object window;
Lisp_Object posn;
int column, row;
-#ifdef MULTI_FRAME
if (frame)
-#else
- if (1)
-#endif
{
/* It's in a frame; which window on that frame? */
pixel_to_glyph_coords (frame, XINT (x), XINT (y), &column, &row,
XSETINT (posn,
buffer_posn_from_coords (XWINDOW (window), column, row));
}
-#ifdef MULTI_FRAME
else if (frame != 0)
{
XSETFRAME (window, frame);
posn = Qnil;
}
-#endif
else
{
window = Qnil;
cbuf[i] &= ~0x80;
buf[i].code = cbuf[i];
-#ifdef MULTI_FRAME
XSETFRAME (buf[i].frame_or_window, selected_frame);
-#else
- buf[i].frame_or_window = Qnil;
-#endif
}
}
abort ();
#endif
#endif
-#ifdef MULTI_FRAME
if (FRAMEP (internal_last_event_frame)
&& XFRAME (internal_last_event_frame) != selected_frame)
do_switch_frame (make_lispy_switch_frame (internal_last_event_frame),
Qnil, 0);
-#endif
_longjmp (getcjmp, 1);
}
#endif
input_pending = 0;
-#ifdef MULTI_FRAME
/* This means that command_loop_1 won't try to select anything the first
time through. */
internal_last_event_frame = Qnil;
Vlast_event_frame = internal_last_event_frame;
-#endif
#ifdef MULTI_KBOARD
current_kboard = initial_kboard;
extern Lisp_Object this_command_keys;
extern int this_command_key_count;
-#ifdef MULTI_FRAME
/* The frame in which the last input event occurred, or Qmacro if the
last event came from a macro. We use this to determine when to
generate switch-frame events. This may be cleared by functions
like Fselect_frame, to make sure that a switch-frame event is
generated by the next character. */
extern Lisp_Object internal_last_event_frame;
-#endif
-
\f
/* Macros for dealing with lispy events. */
#define GC_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_CHAR_TABLE)
#define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR)
#define GC_BOOL_VECTOR_P(x) GC_PSEUDOVECTORP (x, PVEC_BOOL_VECTOR)
-
-#ifdef MULTI_FRAME
#define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME)
#define GC_FRAMEP(x) GC_PSEUDOVECTORP (x, PVEC_FRAME)
-#else
-#ifdef HAVE_MOUSE
-/* We could use this in the !HAVE_MOUSE case also, but we prefer a compile-time
- error message in case FRAMEP is used. */
-#define FRAMEP(x) (EQ (x, Fselected_frame ()))
-#define GC_FRAMEP(x) (GC_EQ (x, Fselected_frame ()))
-#endif
-#endif
-
\f
#define EQ(x, y) (XFASTINT (x) == XFASTINT (y))
#define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y))
/* If the minibuffer window is on a different frame, save that
frame's configuration too. */
-#ifdef MULTI_FRAME
mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window));
if (XFRAME (mini_frame) != selected_frame)
record_unwind_protect (Fset_window_configuration,
if (minibuffer_auto_raise)
Fraise_frame (mini_frame);
-#endif
/* We have to do this after saving the window configuration
since that is what restores the current buffer. */
}
}
-#ifdef MULTI_FRAME
if (XFRAME (mini_frame) != selected_frame)
Fredirect_frame_focus (Fselected_frame (), mini_frame);
-#endif
Vminibuf_scroll_window = selected_window;
Fset_window_buffer (minibuf_window, Fcurrent_buffer ());
{
strout ("#<window-configuration>", -1, printcharfun);
}
-#ifdef MULTI_FRAME
else if (FRAMEP (obj))
{
strout ((FRAME_LIVE_P (XFRAME (obj))
strout (buf, -1, printcharfun);
PRINTCHAR ('>');
}
-#endif
#endif /* not standalone */
else
{
#endif
#ifndef BASE_PURESIZE
-#ifdef MULTI_FRAME
#define BASE_PURESIZE (325000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
-#else
-#define BASE_PURESIZE (240000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
-#endif
#endif
/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
else
{
frame_garbaged = 1;
-#ifdef MULTI_FRAME
if (FRAMEP (Vterminal_frame))
FRAME_GARBAGED_P (XFRAME (Vterminal_frame)) = 1;
-#endif
}
term_initted = 1;
new_computed_face (f, FRAME_PARAM_FACES (f)[1]);
recompute_basic_faces (f);
-#ifdef MULTI_FRAME
/* Find another frame. */
{
Lisp_Object tail, frame, result;
ensure_face_ready (f, i);
}
}
-#endif /* MULTI_FRAME */
}
(frame)
Lisp_Object frame;
{
-#ifdef MULTI_FRAME
if (NILP (frame))
XSETFRAME (frame, selected_frame);
else
CHECK_LIVE_FRAME (frame, 0);
-#endif
return FRAME_MINIBUF_WINDOW (XFRAME (frame));
}
{
int part;
-#ifdef MULTI_FRAME
if (NILP (frame))
XSETFRAME (frame, selected_frame);
else
CHECK_LIVE_FRAME (frame, 2);
-#endif
CHECK_NUMBER (x, 0);
CHECK_NUMBER (y, 1);
lambda => count none of them,
or a specific minibuffer window (the active one) to count. */
-#ifdef MULTI_FRAME
/* all_frames == nil doesn't specify which frames to include. */
if (NILP (all_frames))
all_frames = (! EQ (minibuf, Qlambda)
visible meaning search just visible frames,
0 meaning search visible and iconified frames,
or a window, meaning search the frame that window belongs to. */
-#endif
/* Do this loop at least once, to get the next window, and perhaps
again, if we hit the minibuffer and that is not acceptable. */
/* We've reached the end of this frame.
Which other frames are acceptable? */
tem = WINDOW_FRAME (XWINDOW (window));
-#ifdef MULTI_FRAME
if (! NILP (all_frames))
{
Lisp_Object tem1;
if (EQ (tem, tem1))
XSETFRAME (tem, selected_frame);
}
-#endif
tem = FRAME_ROOT_WINDOW (XFRAME (tem));
break;
lambda => count none of them,
or a specific minibuffer window (the active one) to count. */
-#ifdef MULTI_FRAME
/* all_frames == nil doesn't specify which frames to include.
Decide which frames it includes. */
if (NILP (all_frames))
visible meaning search just visible frames,
0 meaning search visible and iconified frames,
or a window, meaning search the frame that window belongs to. */
-#endif
/* Do this loop at least once, to get the previous window, and perhaps
again, if we hit the minibuffer and that is not acceptable. */
/* We have found the top window on the frame.
Which frames are acceptable? */
tem = WINDOW_FRAME (XWINDOW (window));
-#ifdef MULTI_FRAME
if (! NILP (all_frames))
/* It's actually important that we use prev_frame here,
rather than next_frame. All the windows acceptable
if (EQ (tem, tem1))
XSETFRAME (tem, selected_frame);
}
-#endif
/* If this frame has a minibuffer, find that window first,
because it is conceptually the last window in that frame. */
if (FRAME_HAS_MINIBUF_P (XFRAME (tem)))
Lisp_Object frame_arg;
frame_arg = Qt;
-#ifdef MULTI_FRAME
/* If we're only looping through windows on a particular frame,
frame points to that frame. If we're looping through windows
on all frames, frame is 0. */
frame_arg = frames;
else if (EQ (frames, Qvisible))
frame_arg = frames;
-#else
- frame = 0;
-#endif
/* frame_arg is Qlambda to stick to one frame,
Qvisible to consider all visible frames,
case DELETE_BUFFER_WINDOWS:
if (EQ (XWINDOW (w)->buffer, obj))
{
-#ifdef MULTI_FRAME
FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (w)));
/* If this window is dedicated, and in a frame of its own,
Fdelete_frame (WINDOW_FRAME (XWINDOW (w)), Qnil);
}
else
-#endif
/* If we're deleting the buffer displayed in the only window
on the frame, find a new buffer to display there. */
if (NILP (XWINDOW (w)->parent))
if (NILP (another_buffer))
another_buffer
= Fget_buffer_create (build_string ("*scratch*"));
-#ifdef MULTI_FRAME
/* If this window is dedicated, and in a frame of its own,
kill the frame. */
if (EQ (w, FRAME_ROOT_WINDOW (f))
Fdelete_frame (WINDOW_FRAME (XWINDOW (w)), Qnil);
}
else
-#endif
{
/* Otherwise show a different buffer in the window. */
XWINDOW (w)->dedicated = Qnil;
(buffer, frame)
Lisp_Object buffer, frame;
{
-#ifdef MULTI_FRAME
/* FRAME uses t and nil to mean the opposite of what window_loop
expects. */
if (! FRAMEP (frame))
frame = NILP (frame) ? Qt : Qnil;
-#else
- frame = Qt;
-#endif
if (!NILP (buffer))
{
ow->buffer);
selected_window = window;
-#ifdef MULTI_FRAME
if (XFRAME (WINDOW_FRAME (w)) != selected_frame)
{
XFRAME (WINDOW_FRAME (w))->selected_window = window;
}
else
selected_frame->selected_window = window;
-#endif
record_buffer (w->buffer);
Fset_buffer (w->buffer);
display_buffer_1 (window)
Lisp_Object window;
{
-#ifdef MULTI_FRAME
FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (window)));
FRAME_SAMPLE_VISIBILITY (f);
if (f != selected_frame)
else if (FRAME_VISIBLE_P (f))
Fraise_frame (WINDOW_FRAME (XWINDOW (window)));
}
-#endif
return window;
}
}
}
-#ifdef MULTI_FRAME
/* If pop_up_frames,
look for a window showing BUFFER on any visible or iconified frame.
Otherwise search only the current frame. */
if (pop_up_frames || last_nonminibuf_frame == 0)
XSETFASTINT (tem, 0);
else
-#endif
XSETFRAME (tem, last_nonminibuf_frame);
window = Fget_buffer_window (buffer, tem);
if (!NILP (window)
}
}
-#ifdef MULTI_FRAME
/* If there are no frames open that have more than a minibuffer,
we need to create a new frame. */
if (pop_up_frames || last_nonminibuf_frame == 0)
Fset_window_buffer (window, buffer);
return display_buffer_1 (window);
}
-#endif /* MULTI_FRAME */
if (pop_up_windows
-#ifdef MULTI_FRAME
|| FRAME_MINIBUF_ONLY_P (selected_frame)
/* If the current frame is a special display frame,
don't try to reuse its windows. */
|| !NILP (XWINDOW (FRAME_ROOT_WINDOW (selected_frame))->dedicated)
-#endif
)
{
Lisp_Object frames;
frames = Qnil;
-#ifdef MULTI_FRAME
if (FRAME_MINIBUF_ONLY_P (selected_frame))
XSETFRAME (frames, last_nonminibuf_frame);
-#endif
/* Don't try to create a window if would get an error */
if (split_height_threshold < window_min_height << 1)
split_height_threshold = window_min_height << 1;
ignore minibuffers and dedicated windows.
This means they can return nil. */
-#ifdef MULTI_FRAME
/* If the frame we would try to split cannot be split,
try other frames. */
if (FRAME_NO_SPLIT_P (NILP (frames) ? selected_frame
window = Fget_largest_window (Qt);
}
else
-#endif
window = Fget_largest_window (frames);
/* If we got a tall enough full-width window that can be split,
|| EQ (XWINDOW (window)->parent, Qnil))
&& window_height (window) >= window_min_height << 1)
window = Fsplit_window (window, Qnil, Qnil);
-#ifdef MULTI_FRAME
/* If Fget_lru_window returned nil, try other approaches. */
/* Try visible frames first. */
if (NILP (window))
/* As a last resort, make a new frame. */
if (NILP (window))
window = Fframe_selected_window (call0 (Vpop_up_frame_function));
-#else
- /* As a last resort, use a non minibuffer window. */
- if (NILP (window))
- window = Fframe_first_window (Fselected_frame ());
-#endif
/* If window appears above or below another,
even out their heights. */
other = upper = lower = Qnil;
{
window = Fdisplay_buffer (buf, Qnil);
-#ifdef MULTI_FRAME
if (XFRAME (XWINDOW (window)->frame) != selected_frame)
Fmake_frame_visible (WINDOW_FRAME (XWINDOW (window)));
-#endif /* MULTI_FRAME */
Vminibuf_scroll_window = window;
w = XWINDOW (window);
XSETFASTINT (w->hscroll, 0);
if (XFASTINT (data->frame_height) != previous_frame_height
|| XFASTINT (data->frame_width) != previous_frame_width)
change_frame_size (f, data->frame_height, data->frame_width, 0, 0);
-#if defined (HAVE_WINDOW_SYSTEM) || (defined (MSDOS) && defined (MULTI_FRAME))
+#if defined (HAVE_WINDOW_SYSTEM) || defined (MSDOS)
if (XFASTINT (data->frame_menu_bar_lines)
!= previous_frame_menu_bar_lines)
x_set_menu_bar_lines (f, data->frame_menu_bar_lines, 0);
FRAME_ROOT_WINDOW (f) = data->root_window;
Fselect_window (data->current_window);
-#ifdef MULTI_FRAME
if (NILP (data->focus_frame)
|| (FRAMEP (data->focus_frame)
&& FRAME_LIVE_P (XFRAME (data->focus_frame))))
Fredirect_frame_focus (frame, data->focus_frame);
-#endif
#if 0 /* I don't understand why this is needed, and it causes problems
when the frame's old selected window has been deleted. */
-#ifdef MULTI_FRAME
if (f != selected_frame && FRAME_WINDOW_P (f))
do_switch_frame (WINDOW_FRAME (XWINDOW (data->root_window)),
Qnil, 0);
-#endif
#endif
/* Set the screen height to the value it had before this function. */
|| previous_frame_width != FRAME_WIDTH (f))
change_frame_size (f, previous_frame_height, previous_frame_width,
0, 0);
-#if defined (HAVE_WINDOW_SYSTEM) || (defined (MSDOS) && defined (MULTI_FRAME))
+#if defined (HAVE_WINDOW_SYSTEM) || defined (MSDOS)
if (previous_frame_menu_bar_lines != FRAME_MENU_BAR_LINES (f))
x_set_menu_bar_lines (f, previous_frame_menu_bar_lines, 0);
#endif
window_min_height = XINT (data->min_height);
window_min_width = XINT (data->min_width);
-#ifdef MULTI_FRAME
/* Fselect_window will have made f the selected frame, so we
reselect the proper frame here. Fhandle_switch_frame will change the
selected window too, but that doesn't make the call to
selected window. */
if (FRAME_LIVE_P (XFRAME (data->selected_frame)))
do_switch_frame (data->selected_frame, Qnil, 0);
-#endif
if (!NILP (new_current_buffer))
Fset_buffer (new_current_buffer);
XSETFASTINT (data->frame_width, FRAME_WIDTH (f));
XSETFASTINT (data->frame_height, FRAME_HEIGHT (f));
XSETFASTINT (data->frame_menu_bar_lines, FRAME_MENU_BAR_LINES (f));
-#ifdef MULTI_FRAME
XSETFRAME (data->selected_frame, selected_frame);
-#endif
data->current_window = FRAME_SELECTED_WINDOW (f);
XSETBUFFER (data->current_buffer, current_buffer);
data->minibuf_scroll_window = Vminibuf_scroll_window;
\f
init_window_once ()
{
-#ifdef MULTI_FRAME
selected_frame = make_terminal_frame ();
XSETFRAME (Vterminal_frame, selected_frame);
minibuf_window = selected_frame->minibuffer_window;
selected_window = selected_frame->selected_window;
last_nonminibuf_frame = selected_frame;
-#else /* not MULTI_FRAME */
- extern Lisp_Object get_minibuffer ();
-
- selected_frame = last_nonminibuf_frame = &the_only_frame;
-
- minibuf_window = make_window ();
- FRAME_ROOT_WINDOW (selected_frame) = make_window ();
-
- XWINDOW (FRAME_ROOT_WINDOW (selected_frame))->next = minibuf_window;
- XWINDOW (minibuf_window)->prev = FRAME_ROOT_WINDOW (selected_frame);
- XWINDOW (minibuf_window)->mini_p = Qt;
-
- /* These values 9 and 10 are arbitrary,
- just so that there is "something there."
- Correct values are put in in init_xdisp */
-
- XSETFASTINT (XWINDOW (FRAME_ROOT_WINDOW (selected_frame))->width, 10);
- XSETFASTINT (XWINDOW (minibuf_window)->width, 10);
-
- XSETFASTINT (XWINDOW (FRAME_ROOT_WINDOW (selected_frame))->height, 9);
- XSETFASTINT (XWINDOW (minibuf_window)->top, 9);
- XSETFASTINT (XWINDOW (minibuf_window)->height, 1);
-
- /* Prevent error in Fset_window_buffer. */
- XWINDOW (FRAME_ROOT_WINDOW (selected_frame))->buffer = Qt;
- XWINDOW (minibuf_window)->buffer = Qt;
-
- /* Now set them up for real. */
- Fset_window_buffer (FRAME_ROOT_WINDOW (selected_frame),
- Fcurrent_buffer ());
- Fset_window_buffer (minibuf_window, get_minibuffer (0));
-
- selected_window = FRAME_ROOT_WINDOW (selected_frame);
- /* Make sure this window seems more recently used than
- a newly-created, never-selected window. Increment
- window_select_count so the first selection ever will get
- something newer than this. */
- XSETFASTINT (XWINDOW (selected_window)->use_time, ++window_select_count);
-#endif /* not MULTI_FRAME */
window_initialized = 1;
}
Qtemp_buffer_show_hook = intern ("temp-buffer-show-hook");
staticpro (&Qtemp_buffer_show_hook);
-#ifndef MULTI_FRAME
- /* Make sure all windows get marked */
- staticpro (&minibuf_window);
-#endif
-
DEFVAR_LISP ("temp-buffer-show-function", &Vtemp_buffer_show_function,
"Non-nil means call as function to display a help buffer.\n\
The function is called with one argument, the buffer to be displayed.\n\
mini_window = FRAME_MINIBUF_WINDOW (selected_frame);
f = XFRAME (WINDOW_FRAME (XWINDOW (mini_window)));
-#ifdef MULTI_FRAME
FRAME_SAMPLE_VISIBILITY (f);
if (FRAME_VISIBLE_P (selected_frame)
&& ! FRAME_VISIBLE_P (f))
Fmake_frame_visible (WINDOW_FRAME (XWINDOW (mini_window)));
-#endif
if (m)
{
return;
#endif
-#ifdef MULTI_FRAME
if (! FRAME_WINDOW_P (selected_frame)
&& previous_terminal_frame != selected_frame)
{
XSETFRAME (Vterminal_frame, selected_frame);
}
previous_terminal_frame = selected_frame;
-#endif
/* Set the visible flags for all frames.
Do this before checking for resized or garbaged frames; they want
unrequest_sigio ();
stop_polling ();
-#ifdef MULTI_FRAME
if (all_windows)
{
Lisp_Object tail;
}
}
else
-#endif /* MULTI_FRAME */
{
if (FRAME_VISIBLE_P (selected_frame))
pause = update_frame (selected_frame, 0, 0);
case 'F':
/* %F displays the frame name. */
-#ifdef MULTI_FRAME
if (!NILP (f->title))
return (char *) XSTRING (f->title)->data;
if (f->explicit_name || ! FRAME_WINDOW_P (f))
return (char *) XSTRING (f->name)->data;
-#endif
return "Emacs";
case 'f':
new_computed_face (f, FRAME_PARAM_FACES (f)[1]);
recompute_basic_faces (f);
-#ifdef MULTI_FRAME
/* Find another X frame. */
{
Lisp_Object tail, frame, result;
ensure_face_ready (f, i);
}
}
-#endif /* MULTI_FRAME */
}