annotate src/winslots.h @ 611:38db05db9cb5

[xemacs-hg @ 2001-06-08 12:21:09 by ben] ------ gc-in-window-procedure fixes ------ alloc.c: Create "post-gc actions", to avoid those dreaded "GC during window procedure" problems. event-msw.c: Abort, clean and simple, when GC in window procedure. We want to flush these puppies out. glyphs-msw.c: Use a post-gc action when destroying subwindows. lisp.h: Declare register_post_gc_action(). scrollbar-msw.c: Use a post-gc action when unshowing scrollbar windows, if in gc. redisplay.c: Add comment about the utter evilness of what's going down here. ------ cygwin setitimer fixes ------ Makefile.in.in: Compile profile.c only when HAVE_SETITIMER. nt.c: Style fixes. nt.c: Move setitimer() emulation to win32.c, because Cygwin needs it too. profile.c: Make sure we don't compile if no setitimer(). Use qxe_setitimer() instead of just plain setitimer(). signal.c: Define qxe_setitimer() as an encapsulation around setitimer() -- call setitimer() directly unless Cygwin or MS Win, in which case we use our simulated version in win32.c. systime.h: Prototype mswindows_setitimer() and qxe_setitimer(). Long comment about "qxe" and the policy regarding encapsulation. win32.c: Move setitimer() emulation here, so Cygwin can use it. Rename a couple of functions and variables to be longer and more descriptive. In setitimer_helper_proc(), send the signal using either mswindows_raise() or (on Cygwin) kill(). If for some reason we are still getting lockups, we'll change the kill() to directly invoke the signal handlers. ------ windows shell fixes ------ callproc.c, ntproc.c: Comments about how these two files must die. callproc.c: On MS Windows, init shell-file-name from SHELL, then COMSPEC, not just COMSPEC. (more correct and closer to FSF.) Don't force a value for SHELL into the environment. (Comments added to explain why not.) nt.c: Don't shove a fabricated SHELL into the environment. See above. ------ misc fixes ------ glyphs-shared.c: Style correction. xemacs-faq.texi: Merge in the rest of Hrvoje's Windows FAQ. Redo section 7 to update current reality and add condensed versions of new changes for 21.1 and 21.4. (Not quite done for 21.4.) Lots more Windows updates. process.el: Need to quote a null argument, too. From Dan Holmsand. startup.el: startup.el: Call MS Windows init function. win32-native.el: Correct comments at top. Correctly handle passing arguments to Cygwin programs and to bash. Fix quoting of zero-length arguments (from Dan Holmsand). Set shell-command-switch based on shell-file-name, which in turn comes from env var SHELL.
author ben
date Fri, 08 Jun 2001 12:21:27 +0000
parents abe6d1db359e
children af57a77cbc92
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* Definitions of marked slots in windows and window configs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 Copyright (C) 1995, 1996 Ben Wing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 Copyright (C) 1996 Chuck Thompson.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 under the terms of the GNU General Public License as published by the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 Free Software Foundation; either version 2, or (at your option) any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 Boston, MA 02111-1307, USA. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 /* Split out of window.h and window.c
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 by Kirill Katsnelson <kkm@kis.ru>, May 1998 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 #ifdef WINDOW_SLOT_DECLARATION
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 #define WINDOW_SLOT_ARRAY(slot, size, compare) WINDOW_SLOT (slot[size], compare)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 #define WINDOW_SLOT_ARRAY(slot, size, compare) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 int wsaidx; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 for (wsaidx = 0; wsaidx < size; wsaidx++) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 WINDOW_SLOT (slot[wsaidx], compare); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 } while (0);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 #define EQUAL_WRAPPED(x,y) internal_equal ((x), (y), 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 /*** Non-specifier vars of window and window config ***/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 /* Non-nil means window is marked as dedicated. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 WINDOW_SLOT (dedicated, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 /*** specifier values cached in the struct window ***/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 /* Display-table to use for displaying chars in this window. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 WINDOW_SLOT (display_table, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 /* Thickness of modeline shadow, in pixels. If negative, draw
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 as recessed. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 WINDOW_SLOT (modeline_shadow_thickness, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 /* Non-nil means to display a modeline for the buffer. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 WINDOW_SLOT (has_modeline_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 /* Thickness of vertical divider shadow, in pixels. If negative, draw as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 recessed. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 WINDOW_SLOT (vertical_divider_shadow_thickness, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 /* Divider surface width (not counting 3-d borders) */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 WINDOW_SLOT (vertical_divider_line_width, EQ);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
60 /* Spacing between outer edge of divider border and window edge */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 WINDOW_SLOT (vertical_divider_spacing, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 /* Whether vertical dividers are always displayed */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 WINDOW_SLOT (vertical_divider_always_visible_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 #ifdef HAVE_SCROLLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 /* Width of vertical scrollbars. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 WINDOW_SLOT (scrollbar_width, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 /* Height of horizontal scrollbars. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 WINDOW_SLOT (scrollbar_height, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 /* Whether the scrollbars are visible */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 WINDOW_SLOT (horizontal_scrollbar_visible_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 WINDOW_SLOT (vertical_scrollbar_visible_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 /* Scrollbar positions */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 WINDOW_SLOT (scrollbar_on_left_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 WINDOW_SLOT (scrollbar_on_top_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 /* Pointer to use for vertical and horizontal scrollbars. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 WINDOW_SLOT (scrollbar_pointer, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 #endif /* HAVE_SCROLLBARS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 #ifdef HAVE_TOOLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 /* Toolbar specification for each of the four positions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 This is not a size hog because the value here is not copied,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 and will be shared with the specs in the specifier. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 WINDOW_SLOT_ARRAY (toolbar, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 /* Toolbar size for each of the four positions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 WINDOW_SLOT_ARRAY (toolbar_size, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 /* Toolbar border width for each of the four positions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 WINDOW_SLOT_ARRAY (toolbar_border_width, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 /* Toolbar visibility status for each of the four positions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 WINDOW_SLOT_ARRAY (toolbar_visible_p, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 /* Caption status of toolbar. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 WINDOW_SLOT (toolbar_buttons_captioned_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 /* The following five don't really need to be cached except
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 that we need to know when they've changed. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 WINDOW_SLOT (default_toolbar, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 WINDOW_SLOT (default_toolbar_width, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 WINDOW_SLOT (default_toolbar_height, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 WINDOW_SLOT (default_toolbar_visible_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 WINDOW_SLOT (default_toolbar_border_width, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 #endif /* HAVE_TOOLBARS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 /* Gutter specification for each of the four positions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 This is not a size hog because the value here is not copied,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 and will be shared with the specs in the specifier. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 WINDOW_SLOT_ARRAY (gutter, 4, EQUAL_WRAPPED);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
105 /* Real (pre-calculated) gutter specification for each of the four positions.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
106 This is not a specifier, it is calculated by the specifier change
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
107 functions. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
108 WINDOW_SLOT_ARRAY (real_gutter, 4, EQUAL_WRAPPED);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 /* Gutter size for each of the four positions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 WINDOW_SLOT_ARRAY (gutter_size, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 /* Real (pre-calculated) gutter size for each of the four positions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 This is not a specifier, it is calculated by the specifier change
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 functions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 WINDOW_SLOT_ARRAY (real_gutter_size, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 /* Gutter border width for each of the four positions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 WINDOW_SLOT_ARRAY (gutter_border_width, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 /* Gutter visibility status for each of the four positions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 WINDOW_SLOT_ARRAY (gutter_visible_p, 4, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 /* The following five don't really need to be cached except
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 that we need to know when they've changed. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 WINDOW_SLOT (default_gutter, EQUAL_WRAPPED);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 WINDOW_SLOT (default_gutter_width, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 WINDOW_SLOT (default_gutter_height, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 WINDOW_SLOT (default_gutter_visible_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 WINDOW_SLOT (default_gutter_border_width, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 /* margins */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 WINDOW_SLOT (left_margin_width, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 WINDOW_SLOT (right_margin_width, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 WINDOW_SLOT (minimum_line_ascent, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 WINDOW_SLOT (minimum_line_descent, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 WINDOW_SLOT (use_left_overflow, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 WINDOW_SLOT (use_right_overflow, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 #ifdef HAVE_MENUBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 /* Visibility of menubar. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 WINDOW_SLOT (menubar_visible_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 #endif /* HAVE_MENUBARS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 WINDOW_SLOT (text_cursor_visible_p, EQ);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 /* Hara-kiri */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 #undef EQUAL_WRAPPED
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 #undef WINDOW_SLOT_DECLARATION
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 #undef WINDOW_SLOT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 #undef WINDOW_SLOT_ARRAY