428
+ − 1 /* Definitions of marked slots in frames
+ − 2 Copyright (C) 1988, 1992, 1993, 1994 Free Software Foundation, Inc.
1346
+ − 3 Copyright (C) 1996, 2002, 2003 Ben Wing.
428
+ − 4
+ − 5 This file is part of XEmacs.
+ − 6
+ − 7 XEmacs is free software; you can redistribute it and/or modify it
+ − 8 under the terms of the GNU General Public License as published by the
+ − 9 Free Software Foundation; either version 2, or (at your option) any
+ − 10 later version.
+ − 11
+ − 12 XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ − 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 15 for more details.
+ − 16
+ − 17 You should have received a copy of the GNU General Public License
+ − 18 along with XEmacs; see the file COPYING. If not, write to
+ − 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ − 20 Boston, MA 02111-1307, USA. */
+ − 21
+ − 22 /* Synched up with: FSF 19.30. Split out of frame.h. */
+ − 23
617
+ − 24 /* We define the Lisp_Objects in the frame structure in a separate file
+ − 25 because there are numerous places we want to iterate over them, such
+ − 26 as when defining them in the structure, initializing them, or marking
+ − 27 them.
+ − 28
+ − 29 To use, define MARKED_SLOT before including this file. In the structure
+ − 30 definition, you also need to define FRAME_SLOT_DECLARATION. No need to
+ − 31 undefine either value; that happens automatically. */
+ − 32
1204
+ − 33 #ifndef MARKED_SLOT_ARRAY
428
+ − 34 #ifdef FRAME_SLOT_DECLARATION
+ − 35 #define MARKED_SLOT_ARRAY(slot, size) MARKED_SLOT(slot[size])
+ − 36 #else
+ − 37 #define MARKED_SLOT_ARRAY(slot, size) do { \
+ − 38 int mslotidx; \
+ − 39 for (mslotidx = 0; mslotidx < size; mslotidx++) \
+ − 40 { \
1204
+ − 41 MARKED_SLOT (slot[mslotidx]) \
428
+ − 42 } \
+ − 43 } while (0);
+ − 44 #endif
1204
+ − 45 #endif /* not MARKED_SLOT_ARRAY */
428
+ − 46
+ − 47 /* device frame belongs to. */
1204
+ − 48 MARKED_SLOT (device)
428
+ − 49
+ − 50 /* Name of this frame: a Lisp string.
+ − 51 NOT the same as the frame's title, even though FSF bogusly
+ − 52 confuses the two. The frame's name is used for resourcing
+ − 53 and lookup purposes and is something you can count on having
+ − 54 a specific value, while the frame's title may vary depending
+ − 55 on the user's choice of `frame-title-format'. */
1204
+ − 56 MARKED_SLOT (name)
428
+ − 57
+ − 58 /* The frame which should receive keystrokes that occur in this
+ − 59 frame, or nil if they should go to the frame itself. This is
+ − 60 usually nil, but if the frame is minibufferless, we can use this
+ − 61 to redirect keystrokes to a surrogate minibuffer frame when
+ − 62 needed.
+ − 63
+ − 64 Note that a value of nil is different than having the field point
+ − 65 to the frame itself. Whenever the Fselect_frame function is used
+ − 66 to shift from one frame to the other, any redirections to the
+ − 67 original frame are shifted to the newly selected frame; if
+ − 68 focus_frame is nil, Fselect_frame will leave it alone. */
1204
+ − 69 MARKED_SLOT (focus_frame)
428
+ − 70
+ − 71 /* This frame's root window. Every frame has one.
+ − 72 If the frame has only a minibuffer window, this is it.
+ − 73 Otherwise, if the frame has a minibuffer window, this is its sibling. */
1204
+ − 74 MARKED_SLOT (root_window)
428
+ − 75
+ − 76 /* This frame's selected window.
+ − 77 Each frame has its own window hierarchy
+ − 78 and one of the windows in it is selected within the frame.
+ − 79 The selected window of the selected frame is Emacs's selected window. */
1204
+ − 80 MARKED_SLOT (selected_window)
428
+ − 81
+ − 82 /* This frame's minibuffer window.
+ − 83 Most frames have their own minibuffer windows,
+ − 84 but only the selected frame's minibuffer window
+ − 85 can actually appear to exist. */
1204
+ − 86 MARKED_SLOT (minibuffer_window)
428
+ − 87
+ − 88 /* The most recently selected nonminibuf window.
+ − 89 This is used by things like the toolbar code, which doesn't
+ − 90 want the toolbar to change when moving to the minibuffer.
+ − 91 This will only be a minibuf window if we are a minibuf-only
+ − 92 frame. */
1204
+ − 93 MARKED_SLOT (last_nonminibuf_window)
428
+ − 94
617
+ − 95 /* This frame's root window mirror. This structure exactly mirrors
+ − 96 the frame's window structure but contains only pointers to the
+ − 97 display structures. */
1204
+ − 98 MARKED_SLOT (root_mirror)
617
+ − 99
428
+ − 100 /* frame property list */
1204
+ − 101 MARKED_SLOT (plist)
428
+ − 102
442
+ − 103 /* buffer_alist at last redisplay. */
1204
+ − 104 MARKED_SLOT (old_buffer_alist)
442
+ − 105
428
+ − 106 /* A copy of the global Vbuffer_list, to maintain a per-frame buffer
+ − 107 ordering. The Vbuffer_list variable and the buffer_list slot of each
+ − 108 frame contain exactly the same data, just in different orders. */
1204
+ − 109 MARKED_SLOT (buffer_alist)
428
+ − 110
+ − 111 /* Predicate for selecting buffers for other-buffer. */
1204
+ − 112 MARKED_SLOT (buffer_predicate)
428
+ − 113
+ − 114 /* The current mouse pointer for the frame. This is set by calling
+ − 115 `set-frame-pointer'. */
1204
+ − 116 MARKED_SLOT (pointer)
428
+ − 117
+ − 118 /* The current icon for the frame. */
1204
+ − 119 MARKED_SLOT (icon)
428
+ − 120
+ − 121 /* specifier values cached in the struct frame: */
+ − 122
+ − 123 #ifdef HAVE_MENUBARS
1204
+ − 124 MARKED_SLOT (menubar_visible_p)
428
+ − 125 #endif
+ − 126
+ − 127 #ifdef HAVE_SCROLLBARS
+ − 128 /* Width and height of the scrollbars. */
1204
+ − 129 MARKED_SLOT (scrollbar_width)
+ − 130 MARKED_SLOT (scrollbar_height)
428
+ − 131 /* Whether the scrollbars are visible */
1204
+ − 132 MARKED_SLOT (horizontal_scrollbar_visible_p)
+ − 133 MARKED_SLOT (vertical_scrollbar_visible_p)
428
+ − 134 /* Scrollbars location */
1204
+ − 135 MARKED_SLOT (scrollbar_on_left_p)
+ − 136 MARKED_SLOT (scrollbar_on_top_p)
428
+ − 137 #endif
+ − 138
+ − 139 #ifdef HAVE_TOOLBARS
+ − 140 /* The following three don't really need to be cached except
+ − 141 that we need to know when they've changed. */
1204
+ − 142 MARKED_SLOT (default_toolbar_width)
+ − 143 MARKED_SLOT (default_toolbar_height)
+ − 144 MARKED_SLOT (default_toolbar_visible_p)
+ − 145 MARKED_SLOT (default_toolbar_border_width)
+ − 146 MARKED_SLOT (toolbar_shadow_thickness)
428
+ − 147
+ − 148 /* List of toolbar buttons of current toolbars */
1204
+ − 149 MARKED_SLOT_ARRAY (toolbar_buttons, 4)
428
+ − 150 /* Size of the toolbars. The frame-local toolbar space is
+ − 151 subtracted before the windows are arranged. Window and buffer
+ − 152 local toolbars overlay their windows. */
1204
+ − 153 MARKED_SLOT_ARRAY (toolbar_size, 4)
428
+ − 154 /* Visibility of the toolbars. This acts as a valve for toolbar_size. */
1204
+ − 155 MARKED_SLOT_ARRAY (toolbar_visible_p, 4)
428
+ − 156 /* Thickness of the border around the toolbar. */
1204
+ − 157 MARKED_SLOT_ARRAY (toolbar_border_width, 4)
428
+ − 158 #endif
+ − 159
442
+ − 160 /* Cache of subwindow instances for this frame */
1204
+ − 161 MARKED_SLOT (subwindow_instance_cache)
442
+ − 162
428
+ − 163 /* Possible frame-local default for outside margin widths. */
1204
+ − 164 MARKED_SLOT (left_margin_width)
+ − 165 MARKED_SLOT (right_margin_width)
428
+ − 166
+ − 167 #undef MARKED_SLOT
+ − 168 #undef MARKED_SLOT_ARRAY
+ − 169 #undef FRAME_SLOT_DECLARATION