annotate src/xterm.h @ 4413:5a00cec8e9b0

(fill-region-as-paragraph): When we take one word after the fill column, don't stop at period with just one space. When checking whether at beginning of line, if no fill prefix, ignore intervening whitespace.
author Richard M. Stallman <rms@gnu.org>
date Mon, 02 Aug 1993 05:55:56 +0000
parents b9e5a869b33e
children 94fe4e71f7fc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Definitions and headers for communication with X protocol.
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
2 Copyright (C) 1989, 1993 Free Software Foundation, Inc.
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 #ifdef HAVE_X11
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 #include <X11/Xlib.h>
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #include <X11/cursorfont.h>
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include <X11/Xutil.h>
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include <X11/keysym.h>
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include <X11/Xatom.h>
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include <X11/Xresource.h>
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #else
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #include <X/Xlib.h>
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 #endif /* HAVE_X11 */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 /* Define a queue for X-events. One such queue is used for mouse clicks.
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 Another is used for expose events. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 #define EVENT_BUFFER_SIZE 64
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 /* Max and Min sizes in character columns. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 #define MINWIDTH 10
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 #define MINHEIGHT 10
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 #define MAXWIDTH 300
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 #define MAXHEIGHT 80
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 #ifdef HAVE_X11
999
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
43
1040
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
44 /* HAVE_X11R4 is defined if we have the features of X11R4. It should
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
45 be defined when we're using X11R5, since X11R5 has the features of
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
46 X11R4. If, in the future, we find we need more of these flags
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
47 (HAVE_X11R5, for example), code should always be written to test
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
48 the most recent flag first:
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
49
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
50 #ifdef HAVE_X11R5
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
51 ...
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
52 #elif HAVE_X11R4
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
53 ...
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
54 #elif HAVE_X11
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
55 ...
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
56 #endif
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
57
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
58 If you ever find yourself writing a "#ifdef HAVE_FOO" clause that
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
59 looks a lot like another one, consider moving the text into a macro
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
60 whose definition is configuration-dependent, but whose usage is
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
61 universal - like the stuff in systime.h.
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
62
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
63 It turns out that we can auto-detect whether we're being compiled
999
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
64 with X11R3 or X11R4 by looking for the flag macros for R4 structure
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
65 members that R3 doesn't have. */
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
66 #ifdef PBaseSize
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
67 #define HAVE_X11R4
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
68 #endif
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
69
2300
dfef2f43f4bf * xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents: 2208
diff changeset
70 #ifdef XlibSpecificationRelease
dfef2f43f4bf * xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents: 2208
diff changeset
71 #if XlibSpecificationRelease >= 5
dfef2f43f4bf * xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents: 2208
diff changeset
72 #define HAVE_X11R5
dfef2f43f4bf * xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents: 2208
diff changeset
73 #endif
dfef2f43f4bf * xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents: 2208
diff changeset
74 #endif
dfef2f43f4bf * xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents: 2208
diff changeset
75
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 #define PIX_TYPE unsigned long
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 #define XDISPLAY x_current_display,
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 #define XFlushQueue() XFlush(x_current_display)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 #define BLACK_PIX_DEFAULT BlackPixel (x_current_display, \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 XDefaultScreen (x_current_display))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 #define WHITE_PIX_DEFAULT WhitePixel (x_current_display, \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 XDefaultScreen (x_current_display))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 #define DISPLAY_SCREEN_ARG x_current_display, \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 XDefaultScreen (x_current_display)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 #define DISPLAY_CELLS DisplayCells (x_current_display, XDefaultScreen (x_current_display))
1258
353663d81b11 * xterm.h (ROOT_WINDOW): Use the DefaultScreen macro, not the
Jim Blandy <jimb@redhat.com>
parents: 1040
diff changeset
86 #define ROOT_WINDOW RootWindow (x_current_display, DefaultScreen (x_current_display))
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 #define FONT_TYPE XFontStruct
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 #define Color XColor
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 #define XExposeRegionEvent XExposeEvent
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 #define Bitmap Pixmap /* In X11, Bitmaps are are kind of
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 Pixmap. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 #define WINDOWINFO_TYPE XWindowAttributes
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 #define XGetWindowInfo(w, i) XGetWindowAttributes (x_current_display, \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 (w), (i))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 #define XGetFont(f) XLoadQueryFont (x_current_display, (f))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 #define XLoseFont(f) XFreeFont (x_current_display, (f))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 #define XStuffPending() XPending (x_current_display)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 #define XClear(w) XClearWindow (x_current_display, (w))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 #define XWarpMousePointer(w,x,y) XWarpPointer (x_current_display, None, w, \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 0,0,0,0, x, y)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 #define XHandleError XSetErrorHandler
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 #define XHandleIOError XSetIOErrorHandler
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 #define XChangeWindowSize(w,x,y) XResizeWindow(x_current_display,w,x,y)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 #define FONT_WIDTH(f) ((f)->max_bounds.width)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 #define FONT_HEIGHT(f) ((f)->ascent + (f)->descent)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 #define FONT_BASE(f) ((f)->ascent)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 /* The mask of events that text windows always want to receive. This
424
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
112 does not include mouse movement events. It is used when the window
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
113 is created (in x_window) and when we ask/unask for mouse movement
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
114 events (in XTmouse_tracking_enable).
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
115
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
116 We do include ButtonReleases in this set because elisp isn't always
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
117 fast enough to catch them when it wants them, and they're rare
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
118 enough that they don't use much processor time. */
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 #define STANDARD_EVENT_SET \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 (KeyPressMask \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 | ExposureMask \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 | ButtonPressMask \
424
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
124 | ButtonReleaseMask \
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
125 | PointerMotionMask \
a9b60e014edd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 348
diff changeset
126 | PointerMotionHintMask \
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 | StructureNotifyMask \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 | FocusChangeMask \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 | LeaveWindowMask \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 | EnterWindowMask \
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 | VisibilityChangeMask)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 #else /* X10 */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 #define ConnectionNumber(dpy) dpyno()
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 #define PIX_TYPE int
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 #define XDISPLAY
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 #define XFlushQueue() XFlush()
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 #define BLACK_PIX_DEFAULT BlackPixel
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 #define WHITE_PIX_DEFAULT WhitePixel
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 #define DISPLAY_SCREEN_ARG
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 #define DISPLAY_CELLS DisplayCells ()
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 #define ROOT_WINDOW RootWindow
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 #define XFree free
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 #define FONT_TYPE FontInfo
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 #define WINDOWINFO_TYPE WindowInfo
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 #define XGetWindowInfo(w, i) XQueryWindow ((w), (i))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 #define XGetFont(f) XOpenFont ((f))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 #define XLoseFont(f) XCloseFont ((f))
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 #define XStuffPending() XPending ()
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 #define XWarpMousePointer(w,x,y) XWarpMouse (w,x,y)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 #define XHandleError XErrorHandler
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 #define XHandleIOError XIOErrorHandler
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 #define FONT_WIDTH(f) ((f)->width)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 #define FONT_HEIGHT(f) ((f)->height)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 #define FONT_BASE(f) ((f)->base)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 #define XChangeWindowSize(w,x,y) XChangeWindow(w,x,y)
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 #endif /* X10 */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 struct event_queue
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 {
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 int rindex; /* Index at which to fetch next. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 int windex; /* Index at which to store next. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 XEvent xrep[EVENT_BUFFER_SIZE];
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 };
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 /* Queue for mouse clicks. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 extern struct event_queue x_mouse_queue;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 /* This is the X connection that we are using. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 extern Display *x_current_display;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
178 extern struct frame *x_window_to_frame ();
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
180 /* The frame (if any) which has the X window that has keyboard focus.
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
181 Zero if none. This is examined by Ffocus_frame in xfns.c */
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182
2354
dcc756fba34f * xterm.h (x_focus_frame): Add extern keyword to declaration.
Jim Blandy <jimb@redhat.com>
parents: 2300
diff changeset
183 extern struct frame *x_focus_frame;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 #ifdef HAVE_X11
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 /* Variables associated with the X display screen this emacs is using. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 /* How many screens this X display has. */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
189 extern int x_screen_count;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 /* The vendor supporting this X server. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 extern Lisp_Object Vx_vendor;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 /* The vendor's release number for this X server. */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
195 extern int x_release;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 /* Height of this X screen in pixels. */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
198 extern int x_screen_height;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 /* Height of this X screen in millimeters. */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
201 extern int x_screen_height_mm;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 /* Width of this X screen in pixels. */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
204 extern int x_screen_width;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 /* Width of this X screen in millimeters. */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
207 extern int x_screen_width_mm;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 /* Does this X screen do backing store? */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 extern Lisp_Object Vx_backing_store;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 /* Does this X screen do save-unders? */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
213 extern int x_save_under;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 /* Number of planes for this screen. */
1531
86202f01266d * xterm.h (x_screen_count, x_release, x_screen_height,
Jim Blandy <jimb@redhat.com>
parents: 1408
diff changeset
216 extern int x_screen_planes;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 /* X Visual type of this screen. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 extern Lisp_Object Vx_screen_visual;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 #endif /* HAVE_X11 */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 enum text_cursor_kinds {
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 filled_box_cursor, hollow_box_cursor, bar_cursor
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 };
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
227 /* Each X frame object points to its own struct x_display object
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 in the display.x field. The x_display structure contains all
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 the information that is specific to X windows. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 struct x_display
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 {
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 /* Position of the X window (x and y offsets in root window). */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 int left_pos;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 int top_pos;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 /* Border width of the X window as known by the X window system. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 int border_width;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 /* Size of the X window in pixels. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 int pixel_height, pixel_width;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 #ifdef HAVE_X11
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
244 /* The tiled border used when the mouse is out of the frame. */
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 Pixmap border_tile;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 /* Here are the Graphics Contexts for the default font. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 GC normal_gc; /* Normal video */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 GC reverse_gc; /* Reverse video */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 GC cursor_gc; /* cursor drawing */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 #endif /* HAVE_X11 */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 /* Width of the internal border. This is a line of background color
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
254 just inside the window's border. When the frame is selected,
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 a highlighting is displayed inside the internal border. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 int internal_border_width;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
258 /* The X window used for this frame.
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
259 May be zero while the frame object is being created
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 and the X window has not yet been created. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 Window window_desc;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 /* The X window used for the bitmap icon;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 or 0 if we don't have a bitmap icon. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 Window icon_desc;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 /* The X window that is the parent of this X window.
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 Usually but not always RootWindow. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 Window parent_desc;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 /* 1 for bitmap icon, 0 for text icon. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 int icon_bitmap_flag;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 FONT_TYPE *font;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 /* Pixel values used for various purposes.
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 border_pixel may be -1 meaning use a gray tile. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 PIX_TYPE background_pixel;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 PIX_TYPE foreground_pixel;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 PIX_TYPE cursor_pixel;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 PIX_TYPE border_pixel;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 PIX_TYPE mouse_pixel;
2841
ef56e3f6781c (x_display): New field cursor_fore_pixel.
Richard M. Stallman <rms@gnu.org>
parents: 2439
diff changeset
283 PIX_TYPE cursor_foreground_pixel;
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 /* Descriptor for the cursor in use for this window. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 #ifdef HAVE_X11
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 Cursor text_cursor;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 Cursor nontext_cursor;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 Cursor modeline_cursor;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 #else
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 Cursor cursor;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 #endif
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 /* The name that was associated with the icon, the last time
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 it was refreshed. Usually the same as the name of the
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
296 buffer in the currently selected window in the frame */
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 char *icon_label;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 /* Flag to set when the X window needs to be completely repainted. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 int needs_exposure;
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
302 /* What kind of text cursor is drawn in this window right now?
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
303 (If there is no cursor (phys_cursor_x < 0), then this means nothing.) */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
304 enum text_cursor_kinds current_cursor;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
305
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
306 /* What kind of text cursor should we draw in the future?
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
307 This should always be filled_box_cursor or bar_cursor. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
308 enum text_cursor_kinds desired_cursor;
999
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
309
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
310 /* These are the current window manager hints. It seems that
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
311 XSetWMHints, when presented with an unset bit in the `flags'
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
312 member of the hints structure, does not leave the corresponding
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
313 attribute unchanged; rather, it resets that attribute to its
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
314 default value. For example, unless you set the `icon_pixmap'
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
315 field and the `IconPixmapHint' bit, XSetWMHints will forget what
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
316 your icon pixmap was. This is rather troublesome, since some of
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
317 the members (for example, `input' and `icon_pixmap') want to stay
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
318 the same throughout the execution of Emacs. So, we keep this
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
319 structure around, just leaving values in it and adding new bits
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
320 to the mask as we go. */
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 771
diff changeset
321 XWMHints wm_hints;
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
322
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
323 /* The size of the extra width currently allotted for vertical
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
324 scroll bars, in pixels. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
325 int vertical_scroll_bar_extra;
2394
6ec15e6b2a08 (FRAME_FACES, FRAME_N_FACES, FRAME_DEFAULT_FACE)
Richard M. Stallman <rms@gnu.org>
parents: 2354
diff changeset
326
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
327 /* Table of parameter faces for this frame. Any X resources (pixel
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
328 values, fonts) referred to here have been allocated explicitly
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
329 for this face, and should be freed if we change the face. */
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
330 struct face **param_faces;
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
331 int n_param_faces;
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
332
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
333 /* Table of computed faces for this frame. These are the faces
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
334 whose indexes go into the upper bits of a glyph, computed by
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
335 combining the parameter faces specified by overlays, text
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
336 properties, and what have you. The X resources mentioned here
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
337 are all shared with parameter faces. */
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
338 struct face **computed_faces;
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
339 int n_computed_faces; /* How many are valid */
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
340 int size_computed_faces; /* How many are allocated */
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 };
1040
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
342
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
343 /* Get at the computed faces of an X window frame. */
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
344 #define FRAME_PARAM_FACES(f) ((f)->display.x->param_faces)
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
345 #define FRAME_N_PARAM_FACES(f) ((f)->display.x->n_param_faces)
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
346 #define FRAME_DEFAULT_PARAM_FACE(f) (FRAME_PARAM_FACES (f)[0])
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
347 #define FRAME_MODE_LINE_PARAM_FACE(f) (FRAME_PARAM_FACES (f)[1])
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
348
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
349 #define FRAME_COMPUTED_FACES(f) ((f)->display.x->computed_faces)
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
350 #define FRAME_N_COMPUTED_FACES(f) ((f)->display.x->n_computed_faces)
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
351 #define FRAME_SIZE_COMPUTED_FACES(f) ((f)->display.x->size_computed_faces)
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
352 #define FRAME_DEFAULT_FACE(f) ((f)->display.x->computed_faces[0])
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
353 #define FRAME_MODE_LINE_FACE(f) ((f)->display.x->computed_faces[1])
2394
6ec15e6b2a08 (FRAME_FACES, FRAME_N_FACES, FRAME_DEFAULT_FACE)
Richard M. Stallman <rms@gnu.org>
parents: 2354
diff changeset
354
1040
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
355 /* Return the window associated with the frame F. */
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
356 #define FRAME_X_WINDOW(f) ((f)->display.x->window_desc)
eb7ebe86e885 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
357
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
358 /* These two really ought to be called FRAME_PIXEL_{WIDTH,HEIGHT}. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
359 #define PIXEL_WIDTH(f) ((f)->display.x->pixel_width)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
360 #define PIXEL_HEIGHT(f) ((f)->display.x->pixel_height)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
361
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
362 #define FRAME_DESIRED_CURSOR(f) ((f)->display.x->desired_cursor)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1788
diff changeset
363
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364
2394
6ec15e6b2a08 (FRAME_FACES, FRAME_N_FACES, FRAME_DEFAULT_FACE)
Richard M. Stallman <rms@gnu.org>
parents: 2354
diff changeset
365 /* When X windows are used, a glyph may be a 16 bit unsigned datum.
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 The high order byte is the face number and is used as an index
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 in the face table. A face is a font plus:
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 1) the unhighlighted foreground color,
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 2) the unhighlighted background color.
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 For highlighting, the two colors are exchanged.
2394
6ec15e6b2a08 (FRAME_FACES, FRAME_N_FACES, FRAME_DEFAULT_FACE)
Richard M. Stallman <rms@gnu.org>
parents: 2354
diff changeset
371 Face number 0 is unused. The low order byte of a glyph gives
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 the character within the font. All fonts are assumed to be
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 fixed width, and to have the same height and width. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 #ifdef HAVE_X11
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376
1408
b8e32247c590 * xterm.h: Declaration of struct face removed.
Joseph Arceneaux <jla@gnu.org>
parents: 1258
diff changeset
377 /* Face declared in dispextern.h */
259
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 #else /* X10 */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 struct face
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 {
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 FONT_TYPE *font; /* Font info for specified font. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 int fg; /* Unhighlighted foreground. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 int bg; /* Unhighlighted background. */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 };
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 #endif /* X10 */
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 #define MAX_FACES_AND_GLYPHS 256
470231fe99be Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 extern struct face *x_face_table[];
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
391
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
392
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
393 /* X-specific scroll bar stuff. */
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
394
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
395 /* We represent scroll bars as lisp vectors. This allows us to place
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
396 references to them in windows without worrying about whether we'll
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
397 end up with windows referring to dead scroll bars; the garbage
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
398 collector will free it when its time comes.
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
399
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
400 We use struct scroll_bar as a template for accessing fields of the
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
401 vector. */
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
402
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
403 struct scroll_bar {
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
404
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
405 /* These fields are shared by all vectors. */
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
406 int size_from_Lisp_Vector_struct;
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
407 struct Lisp_Vector *next_from_Lisp_Vector_struct;
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
408
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
409 /* The window we're a scroll bar for. */
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
410 Lisp_Object window;
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
411
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
412 /* The next and previous in the chain of scroll bars in this frame. */
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
413 Lisp_Object next, prev;
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
414
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
415 /* The X window representing this scroll bar. Since this is a full
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
416 32-bit quantity, we store it split into two 32-bit values. */
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
417 Lisp_Object x_window_low, x_window_high;
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
418
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
419 /* The position and size of the scroll bar in pixels, relative to the
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
420 frame. */
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
421 Lisp_Object top, left, width, height;
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
422
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
423 /* The starting and ending positions of the handle, relative to the
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
424 handle area (i.e. zero is the top position, not
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
425 SCROLL_BAR_TOP_BORDER). If they're equal, that means the handle
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
426 hasn't been drawn yet.
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
427
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
428 These are not actually the locations where the beginning and end
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
429 are drawn; in order to keep handles from becoming invisible when
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
430 editing large files, we establish a minimum height by always
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
431 drawing handle bottoms VERTICAL_SCROLL_BAR_MIN_HANDLE pixels below
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
432 where they would be normally; the bottom and top are in a
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
433 different co-ordinate system. */
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
434 Lisp_Object start, end;
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
435
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
436 /* If the scroll bar handle is currently being dragged by the user,
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
437 this is the number of pixels from the top of the handle to the
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
438 place where the user grabbed it. If the handle isn't currently
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
439 being dragged, this is Qnil. */
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
440 Lisp_Object dragging;
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
441 };
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
442
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
443 /* The number of elements a vector holding a struct scroll_bar needs. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
444 #define SCROLL_BAR_VEC_SIZE \
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
445 ((sizeof (struct scroll_bar) - sizeof (int) - sizeof (struct Lisp_Vector *)) \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
446 / sizeof (Lisp_Object))
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
447
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
448 /* Turning a lisp vector value into a pointer to a struct scroll_bar. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
449 #define XSCROLL_BAR(vec) ((struct scroll_bar *) XPNTR (vec))
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
450
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
451
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
452 /* Building a 32-bit C integer from two 16-bit lisp integers. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
453 #define SCROLL_BAR_PACK(low, high) (XINT (high) << 16 | XINT (low))
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
454
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
455 /* Setting two lisp integers to the low and high words of a 32-bit C int. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
456 #define SCROLL_BAR_UNPACK(low, high, int32) \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
457 (XSET ((low), Lisp_Int, (int32) & 0xffff), \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
458 XSET ((high), Lisp_Int, ((int32) >> 16) & 0xffff))
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
459
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
460
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
461 /* Extract the X window id of the scroll bar from a struct scroll_bar. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
462 #define SCROLL_BAR_X_WINDOW(ptr) \
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
463 ((Window) SCROLL_BAR_PACK ((ptr)->x_window_low, (ptr)->x_window_high))
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
464
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
465 /* Store a window id in a struct scroll_bar. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
466 #define SET_SCROLL_BAR_X_WINDOW(ptr, id) \
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
467 (SCROLL_BAR_UNPACK ((ptr)->x_window_low, (ptr)->x_window_high, (int) id))
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
468
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
469
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
470 /* Return the outside pixel width for a vertical scroll bar on frame F. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
471 #define VERTICAL_SCROLL_BAR_PIXEL_WIDTH(f) (2*FONT_WIDTH ((f)->display.x->font))
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
472
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
473 /* Return the outside pixel height for a vertical scroll bar HEIGHT
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
474 rows high on frame F. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
475 #define VERTICAL_SCROLL_BAR_PIXEL_HEIGHT(f, height) \
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
476 ((height) * FONT_HEIGHT ((f)->display.x->font))
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
477
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
478 /* Return the inside width of a vertical scroll bar, given the outside
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
479 width. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
480 #define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(width) \
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
481 ((width) - VERTICAL_SCROLL_BAR_LEFT_BORDER - VERTICAL_SCROLL_BAR_RIGHT_BORDER)
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
482
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
483 /* Return the length of the rectangle within which the top of the
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
484 handle must stay. This isn't equivalent to the inside height,
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
485 because the scroll bar handle has a minimum height.
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
486
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
487 This is the real range of motion for the scroll bar, so when we're
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
488 scaling buffer positions to scroll bar positions, we use this, not
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
489 VERTICAL_SCROLL_BAR_INSIDE_HEIGHT. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
490 #define VERTICAL_SCROLL_BAR_TOP_RANGE(height) \
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
491 (VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (height) - VERTICAL_SCROLL_BAR_MIN_HANDLE)
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
492
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
493 /* Return the inside height of vertical scroll bar, given the outside
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
494 height. See VERTICAL_SCROLL_BAR_TOP_RANGE too. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
495 #define VERTICAL_SCROLL_BAR_INSIDE_HEIGHT(height) \
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
496 ((height) - VERTICAL_SCROLL_BAR_TOP_BORDER - VERTICAL_SCROLL_BAR_BOTTOM_BORDER)
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
497
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
498
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
499 /* Border widths for scroll bars.
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
500
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
501 Scroll bar windows don't have any X borders; their border width is
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
502 set to zero, and we redraw borders ourselves. This makes the code
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
503 a bit cleaner, since we don't have to convert between outside width
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
504 (used when relating to the rest of the screen) and inside width
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
505 (used when sizing and drawing the scroll bar window itself).
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
506
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3195
diff changeset
507 The handle moves up and down/back and forth in a rectangle inset
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
508 from the edges of the scroll bar. These are widths by which we
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
509 inset the handle boundaries from the scroll bar edges. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
510 #define VERTICAL_SCROLL_BAR_LEFT_BORDER (2)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
511 #define VERTICAL_SCROLL_BAR_RIGHT_BORDER (3)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
512 #define VERTICAL_SCROLL_BAR_TOP_BORDER (2)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
513 #define VERTICAL_SCROLL_BAR_BOTTOM_BORDER (2)
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
514
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
515 /* Minimum lengths for scroll bar handles, in pixels. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
516 #define VERTICAL_SCROLL_BAR_MIN_HANDLE (5)
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
517
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
518
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
519 /* Manipulating pixel sizes and character sizes.
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
520 Knowledge of which factors affect the overall size of the window should
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
521 be hidden in these macros, if that's possible.
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
522
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
523 /* Return the upper/left pixel position of the character cell on frame F
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
524 at ROW/COL. */
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
525 #define CHAR_TO_PIXEL_ROW(f, row) \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
526 ((f)->display.x->internal_border_width \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
527 + (row) * FONT_HEIGHT ((f)->display.x->font))
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
528 #define CHAR_TO_PIXEL_COL(f, col) \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
529 ((f)->display.x->internal_border_width \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
530 + (col) * FONT_WIDTH ((f)->display.x->font))
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
531
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
532 /* Return the pixel width/height of frame F if it has
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
533 WIDTH columns/HEIGHT rows. */
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
534 #define CHAR_TO_PIXEL_WIDTH(f, width) \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
535 (CHAR_TO_PIXEL_COL (f, width) \
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
536 + (f)->display.x->vertical_scroll_bar_extra \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
537 + (f)->display.x->internal_border_width)
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
538 #define CHAR_TO_PIXEL_HEIGHT(f, height) \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
539 (CHAR_TO_PIXEL_ROW (f, height) \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
540 + (f)->display.x->internal_border_width)
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
541
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
542
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
543 /* Return the row/column (zero-based) of the character cell containing
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
544 the pixel on FRAME at ROW/COL. */
3195
1071243e14c7 (PIXEL_TO_CHAR_COL, PIXEL_TO_CHAR_ROW): Fix mismatch in arg names.
Richard M. Stallman <rms@gnu.org>
parents: 3077
diff changeset
545 #define PIXEL_TO_CHAR_ROW(f, row) \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
546 (((row) - (f)->display.x->internal_border_width) \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
547 / FONT_HEIGHT ((f)->display.x->font))
3195
1071243e14c7 (PIXEL_TO_CHAR_COL, PIXEL_TO_CHAR_ROW): Fix mismatch in arg names.
Richard M. Stallman <rms@gnu.org>
parents: 3077
diff changeset
548 #define PIXEL_TO_CHAR_COL(f, col) \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
549 (((col) - (f)->display.x->internal_border_width) \
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
550 / FONT_WIDTH ((f)->display.x->font))
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
551
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
552 /* How many columns/rows of text can we fit in WIDTH/HEIGHT pixels on
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
553 frame F? */
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
554 #define PIXEL_TO_CHAR_WIDTH(f, width) \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
555 (PIXEL_TO_CHAR_COL (f, ((width) \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
556 - (f)->display.x->internal_border_width \
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
557 - (f)->display.x->vertical_scroll_bar_extra)))
1721
6ba3bca4c3de * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1531
diff changeset
558 #define PIXEL_TO_CHAR_HEIGHT(f, height) \
1788
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
559 (PIXEL_TO_CHAR_ROW (f, ((height) \
aaccd635fb71 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1721
diff changeset
560 - (f)->display.x->internal_border_width)))
2196
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
561
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
562 /* If a struct input_event has a kind which is selection_request_event
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
563 or selection_clear_event, then its contents are really described
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
564 by this structure. */
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
565
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
566 /* For an event of kind selection_request_event,
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
567 this structure really describes the contents. */
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
568 struct selection_input_event
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
569 {
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
570 int kind;
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
571 Display *display;
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
572 Window requestor;
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
573 Atom selection, target, property;
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
574 Time time;
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
575 };
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
576
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
577 #define SELECTION_EVENT_DISPLAY(eventp) \
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
578 (((struct selection_input_event *) (eventp))->display)
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
579 #define SELECTION_EVENT_REQUESTOR(eventp) \
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
580 (((struct selection_input_event *) (eventp))->requestor)
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
581 #define SELECTION_EVENT_SELECTION(eventp) \
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
582 (((struct selection_input_event *) (eventp))->selection)
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
583 #define SELECTION_EVENT_TARGET(eventp) \
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
584 (((struct selection_input_event *) (eventp))->target)
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
585 #define SELECTION_EVENT_PROPERTY(eventp) \
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
586 (((struct selection_input_event *) (eventp))->property)
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
587 #define SELECTION_EVENT_TIME(eventp) \
75e1f1ee83ad (SELECTION_EVENT_DISPLAY): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
588 (((struct selection_input_event *) (eventp))->time)
3077
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
589
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
590
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
591 /* Interface to the face code functions. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
592
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
593 /* Create the first two computed faces for a frame -- the ones that
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
594 have GC's. */
3077
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
595 extern void init_frame_faces (/* FRAME_PTR */);
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
596
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
597 /* Free the resources for the faces associated with a frame. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
598 extern void free_frame_faces (/* FRAME_PTR */);
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
599
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
600 /* Given a computed face, find or make an equivalent display face
3077
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
601 in face_vector, and return a pointer to it. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
602 extern struct face *intern_face (/* FRAME_PTR, struct face * */);
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
603
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
604 /* Given a frame and a face name, return the face's ID number, or
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
605 zero if it isn't a recognized face name. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
606 extern int face_name_id_number (/* FRAME_PTR, Lisp_Object */);
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
607
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
608 /* Return non-zero if FONT1 and FONT2 have the same size bounding box.
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
609 We assume that they're both character-cell fonts. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
610 extern int same_size_fonts (/* XFontStruct *, XFontStruct * */);
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
611
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
612 /* Recompute the GC's for the default and modeline faces.
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
613 We call this after changing frame parameters on which those GC's
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
614 depend. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
615 extern void recompute_basic_faces (/* FRAME_PTR */);
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
616
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
617 /* Return the face ID associated with a buffer position POS. Store
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
618 into *ENDPTR the next position at which a different face is
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
619 needed. This does not take account of glyphs that specify their
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
620 own face codes. F is the frame in use for display, and W is a
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
621 window displaying the current buffer.
3077
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
622
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
623 REGION_BEG, REGION_END delimit the region, so it can be highlighted. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
624 extern int compute_char_face (/* FRAME_PTR frame,
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
625 struct window *w,
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
626 int pos,
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
627 int region_beg, int region_end,
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
628 int *endptr */);
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
629 /* Return the face ID to use to display a special glyph which selects
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
630 FACE_CODE as the face ID, assuming that ordinarily the face would
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
631 be BASIC_FACE. F is the frame. */
8bba60752a32 * xterm.h: New section for declarations for xfaces.c.
Jim Blandy <jimb@redhat.com>
parents: 2841
diff changeset
632 extern int compute_glyph_face (/* FRAME_PTR, int */);