+#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
+ || defined (HAVE_NS) || defined (USE_GTK)
+ /* True means using a menu bar that comes from the X toolkit. */
+ bool_bf external_menu_bar : 1;
+#endif
+
+ /* Next two bitfields are mutually exclusive. They might both be
+ zero if the frame has been made invisible without an icon. */
+
+ /* Nonzero if the frame is currently displayed; we check
+ it to see if we should bother updating the frame's contents.
+
+ On ttys and on Windows NT/9X, to avoid wasting effort updating
+ visible frames that are actually completely obscured by other
+ windows on the display, we bend the meaning of visible slightly:
+ if equal to 2, then the frame is obscured - we still consider
+ it to be "visible" as seen from lisp, but we don't bother
+ updating it. */
+ unsigned visible : 2;
+
+ /* True if the frame is currently iconified. Do not
+ set this directly, use SET_FRAME_ICONIFIED instead. */
+ bool_bf iconified : 1;
+
+ /* True if this frame should be fully redisplayed. Disables all
+ optimizations while rebuilding matrices and redrawing. */
+ bool_bf garbaged : 1;
+
+ /* False means, if this frame has just one window,
+ show no modeline for that window. */
+ bool_bf wants_modeline : 1;
+
+ /* True means raise this frame to the top of the heap when selected. */
+ bool_bf auto_raise : 1;
+
+ /* True means lower this frame to the bottom of the stack when left. */
+ bool_bf auto_lower : 1;
+
+ /* True if frame's root window can't be split. */
+ bool_bf no_split : 1;
+
+ /* If this is set, then Emacs won't change the frame name to indicate
+ the current buffer, etcetera. If the user explicitly sets the frame
+ name, this gets set. If the user sets the name to Qnil, this is
+ cleared. */
+ bool_bf explicit_name : 1;
+
+ /* True if size of some window on this frame has changed. */
+ bool_bf window_sizes_changed : 1;
+
+ /* True if the mouse has moved on this display device
+ since the last time we checked. */
+ bool_bf mouse_moved : 1;
+
+ /* True means that the pointer is invisible. */
+ bool_bf pointer_invisible : 1;
+
+ /* True means that all windows except mini-window and
+ selected window on this frame have frozen window starts. */
+ bool_bf frozen_window_starts : 1;
+
+ /* The output method says how the contents of this frame are
+ displayed. It could be using termcap, or using an X window.
+ This must be the same as the terminal->type. */
+ ENUM_BF (output_method) output_method : 3;
+
+#ifdef HAVE_WINDOW_SYSTEM
+ /* See FULLSCREEN_ enum on top. */
+ ENUM_BF (fullscreen_type) want_fullscreen : 4;
+
+ /* If not vertical_scroll_bar_none, we should actually
+ display the scroll bars of this type on this frame. */
+ ENUM_BF (vertical_scroll_bar_type) vertical_scroll_bar_type : 2;
+
+ /* Nonzero if we should actually display horizontal scroll bars on this frame. */
+ bool_bf horizontal_scroll_bars : 1;
+#endif /* HAVE_WINDOW_SYSTEM */
+
+ /* Whether new_height and new_width shall be interpreted
+ in pixels. */
+ bool_bf new_pixelwise : 1;
+
+ /* True means x_set_window_size requests can be processed for this
+ frame. */
+ bool_bf can_x_set_window_size : 1;
+
+ /* Set to true after this frame was made by `make-frame'. */
+ bool_bf after_make_frame : 1;
+
+ /* True means tool bar has been redisplayed at least once in current
+ session. */
+ bool_bf tool_bar_redisplayed_once : 1;
+
+ /* Bitfield area ends here. */
+
+ /* Number of lines (rounded up) of tool bar. REMOVE THIS */