Mercurial > hg > xemacs-beta
comparison src/console-x.h @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | 8de8e3f6228a |
comparison
equal
deleted
inserted
replaced
427:0a0253eac470 | 428:3ecd8885ac67 |
---|---|
1 /* Define X specific console, device, and frame object for XEmacs. | |
2 Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. | |
3 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. | |
4 | |
5 This file is part of XEmacs. | |
6 | |
7 XEmacs is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
9 Free Software Foundation; either version 2, or (at your option) any | |
10 later version. | |
11 | |
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with XEmacs; see the file COPYING. If not, write to | |
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
20 Boston, MA 02111-1307, USA. */ | |
21 | |
22 /* Synched up with: Not in FSF. */ | |
23 | |
24 | |
25 /* Authorship: | |
26 | |
27 Ultimately based on FSF, then later on JWZ work for Lemacs. | |
28 Rewritten over time by Ben Wing and Chuck Thompson (original | |
29 multi-device work by Chuck Thompson). | |
30 */ | |
31 | |
32 #ifndef _XEMACS_CONSOLE_X_H_ | |
33 #define _XEMACS_CONSOLE_X_H_ | |
34 | |
35 #ifdef HAVE_X_WINDOWS | |
36 | |
37 #include "console.h" | |
38 #include "xintrinsic.h" | |
39 | |
40 #include <X11/cursorfont.h> | |
41 #include <X11/keysym.h> | |
42 #include <X11/Xatom.h> | |
43 | |
44 #if 0 /* mrb - Xos sux. */ | |
45 #ifdef USG | |
46 #undef USG /* ####KLUDGE for Solaris 2.2 and up */ | |
47 #include <X11/Xos.h> | |
48 #define USG | |
49 #else | |
50 #include <X11/Xos.h> | |
51 #endif | |
52 #endif /* 0 */ | |
53 | |
54 #include <X11/StringDefs.h> | |
55 | |
56 #ifdef HAVE_XPM | |
57 #include <X11/xpm.h> | |
58 #endif | |
59 | |
60 /* R5 defines the XPointer type, but R4 doesn't. | |
61 R4 also doesn't define a version number, but R5 does. */ | |
62 #if (XlibSpecificationRelease < 5) | |
63 # define XPointer char * | |
64 #endif | |
65 | |
66 DECLARE_CONSOLE_TYPE (x); | |
67 | |
68 struct x_device | |
69 { | |
70 /* The X connection of this device. */ | |
71 Display *display; | |
72 | |
73 /* Set by x_IO_error_handler(). */ | |
74 int being_deleted; | |
75 | |
76 /* Xt application info. */ | |
77 Widget Xt_app_shell; | |
78 | |
79 /* Cache of GC's for frame's on this device. */ | |
80 struct gc_cache *gc_cache; | |
81 | |
82 /* Selected visual, depth and colormap for this device */ | |
83 Visual *visual; | |
84 int depth; | |
85 Colormap device_cmap; | |
86 | |
87 /* Used by x_bevel_modeline in redisplay-x.c */ | |
88 Pixmap gray_pixmap; | |
89 | |
90 /* Atoms associated with this device. */ | |
91 /* allocated in Xatoms_of_xfns in xfns.c */ | |
92 Atom Xatom_WM_PROTOCOLS; | |
93 Atom Xatom_WM_DELETE_WINDOW; | |
94 Atom Xatom_WM_SAVE_YOURSELF; | |
95 Atom Xatom_WM_TAKE_FOCUS; | |
96 Atom Xatom_WM_STATE; | |
97 | |
98 /* allocated in Xatoms_of_xselect in xselect.c */ | |
99 Atom Xatom_CLIPBOARD; | |
100 Atom Xatom_TIMESTAMP; | |
101 Atom Xatom_TEXT; | |
102 Atom Xatom_DELETE; | |
103 Atom Xatom_MULTIPLE; | |
104 Atom Xatom_INCR; | |
105 Atom Xatom_EMACS_TMP; | |
106 Atom Xatom_TARGETS; | |
107 Atom Xatom_NULL; | |
108 Atom Xatom_ATOM_PAIR; | |
109 Atom Xatom_COMPOUND_TEXT; | |
110 | |
111 /* allocated in Xatoms_of_objects_x in objects-x.c */ | |
112 Atom Xatom_FOUNDRY; | |
113 Atom Xatom_FAMILY_NAME; | |
114 Atom Xatom_WEIGHT_NAME; | |
115 Atom Xatom_SLANT; | |
116 Atom Xatom_SETWIDTH_NAME; | |
117 Atom Xatom_ADD_STYLE_NAME; | |
118 Atom Xatom_PIXEL_SIZE; | |
119 Atom Xatom_POINT_SIZE; | |
120 Atom Xatom_RESOLUTION_X; | |
121 Atom Xatom_RESOLUTION_Y; | |
122 Atom Xatom_SPACING; | |
123 Atom Xatom_AVERAGE_WIDTH; | |
124 Atom Xatom_CHARSET_REGISTRY; | |
125 Atom Xatom_CHARSET_ENCODING; | |
126 | |
127 /* The following items are all used exclusively in event-Xt.c. */ | |
128 int MetaMask, HyperMask, SuperMask, AltMask, ModeMask; | |
129 KeySym lock_interpretation; | |
130 | |
131 XModifierKeymap *x_modifier_keymap; | |
132 | |
133 KeySym *x_keysym_map; | |
134 int x_keysym_map_min_code; | |
135 int x_keysym_map_max_code; | |
136 int x_keysym_map_keysyms_per_code; | |
137 Lisp_Object x_keysym_map_hash_table; | |
138 | |
139 /* frame that holds the WM_COMMAND property; there should be exactly | |
140 one of these per device. */ | |
141 Lisp_Object WM_COMMAND_frame; | |
142 | |
143 /* #### It's not clear that there is much distinction anymore | |
144 between mouse_timestamp and global_mouse_timestamp, now that | |
145 Emacs doesn't see most (all?) events not destined for it. */ | |
146 | |
147 /* The timestamp of the last button or key event used by emacs itself. | |
148 This is used for asserting selections and input focus. */ | |
149 Time mouse_timestamp; | |
150 | |
151 /* This is the timestamp the last button or key event whether it was | |
152 dispatched to emacs or widgets. */ | |
153 Time global_mouse_timestamp; | |
154 | |
155 /* This is the last known timestamp received from the server. It is | |
156 maintained by x_event_to_emacs_event and used to patch bogus | |
157 WM_TAKE_FOCUS messages sent by Mwm. */ | |
158 Time last_server_timestamp; | |
159 | |
160 /* Used by Xlib to preserve information across calls to | |
161 XLookupString(), to implement compose processing. | |
162 | |
163 According to The X Window System, p. 467, "The creation of | |
164 XComposeStatus structures is implementation dependent; | |
165 a portable program must pass NULL for this argument." | |
166 But this means that a portable program cannot implement | |
167 compose processing! WTF? | |
168 | |
169 So we just set it to all zeros. */ | |
170 | |
171 /* No X Server ever used this, AFAIK -- mrb */ | |
172 /* XComposeStatus x_compose_status; */ | |
173 | |
174 #ifdef HAVE_XIM | |
175 XIM xim; | |
176 XIMStyles *xim_styles; | |
177 #endif /* HAVE_XIM */ | |
178 | |
179 /* stuff for sticky modifiers: */ | |
180 | |
181 unsigned int need_to_add_mask, down_mask; | |
182 KeyCode last_downkey; | |
183 Time release_time; | |
184 }; | |
185 | |
186 #define DEVICE_X_DATA(d) DEVICE_TYPE_DATA (d, x) | |
187 | |
188 #define FRAME_X_DISPLAY(f) (DEVICE_X_DISPLAY (XDEVICE (f->device))) | |
189 #define DEVICE_X_DISPLAY(d) (DEVICE_X_DATA (d)->display) | |
190 #define DEVICE_X_BEING_DELETED(d) (DEVICE_X_DATA (d)->being_deleted) | |
191 #define DEVICE_X_VISUAL(d) (DEVICE_X_DATA (d)->visual) | |
192 #define DEVICE_X_DEPTH(d) (DEVICE_X_DATA (d)->depth) | |
193 #define DEVICE_X_COLORMAP(d) (DEVICE_X_DATA (d)->device_cmap) | |
194 #define DEVICE_XT_APP_SHELL(d) (DEVICE_X_DATA (d)->Xt_app_shell) | |
195 #define DEVICE_X_GC_CACHE(d) (DEVICE_X_DATA (d)->gc_cache) | |
196 #define DEVICE_X_GRAY_PIXMAP(d) (DEVICE_X_DATA (d)->gray_pixmap) | |
197 #define DEVICE_X_WM_COMMAND_FRAME(d) (DEVICE_X_DATA (d)->WM_COMMAND_frame) | |
198 #define DEVICE_X_MOUSE_TIMESTAMP(d) (DEVICE_X_DATA (d)->mouse_timestamp) | |
199 #define DEVICE_X_GLOBAL_MOUSE_TIMESTAMP(d) (DEVICE_X_DATA (d)->global_mouse_timestamp) | |
200 #define DEVICE_X_LAST_SERVER_TIMESTAMP(d) (DEVICE_X_DATA (d)->last_server_timestamp) | |
201 #define DEVICE_X_KEYSYM_MAP_HASH_TABLE(d) (DEVICE_X_DATA (d)->x_keysym_map_hash_table) | |
202 /* #define DEVICE_X_X_COMPOSE_STATUS(d) (DEVICE_X_DATA (d)->x_compose_status) */ | |
203 #ifdef HAVE_XIM | |
204 #define DEVICE_X_XIM(d) (DEVICE_X_DATA (d)->xim) | |
205 #define DEVICE_X_XIM_STYLES(d) (DEVICE_X_DATA (d)->xim_styles) | |
206 #define DEVICE_X_FONTSET(d) (DEVICE_X_DATA (d)->fontset) | |
207 #endif /* HAVE_XIM */ | |
208 | |
209 /* allocated in Xatoms_of_xfns in xfns.c */ | |
210 #define DEVICE_XATOM_WM_PROTOCOLS(d) (DEVICE_X_DATA (d)->Xatom_WM_PROTOCOLS) | |
211 #define DEVICE_XATOM_WM_DELETE_WINDOW(d) (DEVICE_X_DATA (d)->Xatom_WM_DELETE_WINDOW) | |
212 #define DEVICE_XATOM_WM_SAVE_YOURSELF(d) (DEVICE_X_DATA (d)->Xatom_WM_SAVE_YOURSELF) | |
213 #define DEVICE_XATOM_WM_TAKE_FOCUS(d) (DEVICE_X_DATA (d)->Xatom_WM_TAKE_FOCUS) | |
214 #define DEVICE_XATOM_WM_STATE(d) (DEVICE_X_DATA (d)->Xatom_WM_STATE) | |
215 | |
216 /* allocated in Xatoms_of_xselect in xselect.c */ | |
217 #define DEVICE_XATOM_CLIPBOARD(d) (DEVICE_X_DATA (d)->Xatom_CLIPBOARD) | |
218 #define DEVICE_XATOM_TIMESTAMP(d) (DEVICE_X_DATA (d)->Xatom_TIMESTAMP) | |
219 #define DEVICE_XATOM_TEXT(d) (DEVICE_X_DATA (d)->Xatom_TEXT) | |
220 #define DEVICE_XATOM_DELETE(d) (DEVICE_X_DATA (d)->Xatom_DELETE) | |
221 #define DEVICE_XATOM_MULTIPLE(d) (DEVICE_X_DATA (d)->Xatom_MULTIPLE) | |
222 #define DEVICE_XATOM_INCR(d) (DEVICE_X_DATA (d)->Xatom_INCR) | |
223 #define DEVICE_XATOM_EMACS_TMP(d) (DEVICE_X_DATA (d)->Xatom_EMACS_TMP) | |
224 #define DEVICE_XATOM_TARGETS(d) (DEVICE_X_DATA (d)->Xatom_TARGETS) | |
225 #define DEVICE_XATOM_NULL(d) (DEVICE_X_DATA (d)->Xatom_NULL) | |
226 #define DEVICE_XATOM_ATOM_PAIR(d) (DEVICE_X_DATA (d)->Xatom_ATOM_PAIR) | |
227 #define DEVICE_XATOM_COMPOUND_TEXT(d) (DEVICE_X_DATA (d)->Xatom_COMPOUND_TEXT) | |
228 | |
229 /* allocated in Xatoms_of_objects_x in objects-x.c */ | |
230 #define DEVICE_XATOM_FOUNDRY(d) (DEVICE_X_DATA (d)->Xatom_FOUNDRY) | |
231 #define DEVICE_XATOM_FAMILY_NAME(d) (DEVICE_X_DATA (d)->Xatom_FAMILY_NAME) | |
232 #define DEVICE_XATOM_WEIGHT_NAME(d) (DEVICE_X_DATA (d)->Xatom_WEIGHT_NAME) | |
233 #define DEVICE_XATOM_SLANT(d) (DEVICE_X_DATA (d)->Xatom_SLANT) | |
234 #define DEVICE_XATOM_SETWIDTH_NAME(d) (DEVICE_X_DATA (d)->Xatom_SETWIDTH_NAME) | |
235 #define DEVICE_XATOM_ADD_STYLE_NAME(d) (DEVICE_X_DATA (d)->Xatom_ADD_STYLE_NAME) | |
236 #define DEVICE_XATOM_PIXEL_SIZE(d) (DEVICE_X_DATA (d)->Xatom_PIXEL_SIZE) | |
237 #define DEVICE_XATOM_POINT_SIZE(d) (DEVICE_X_DATA (d)->Xatom_POINT_SIZE) | |
238 #define DEVICE_XATOM_RESOLUTION_X(d) (DEVICE_X_DATA (d)->Xatom_RESOLUTION_X) | |
239 #define DEVICE_XATOM_RESOLUTION_Y(d) (DEVICE_X_DATA (d)->Xatom_RESOLUTION_Y) | |
240 #define DEVICE_XATOM_SPACING(d) (DEVICE_X_DATA (d)->Xatom_SPACING) | |
241 #define DEVICE_XATOM_AVERAGE_WIDTH(d) (DEVICE_X_DATA (d)->Xatom_AVERAGE_WIDTH) | |
242 #define DEVICE_XATOM_CHARSET_REGISTRY(d) (DEVICE_X_DATA (d)->Xatom_CHARSET_REGISTRY) | |
243 #define DEVICE_XATOM_CHARSET_ENCODING(d) (DEVICE_X_DATA (d)->Xatom_CHARSET_ENCODING) | |
244 | |
245 #define Xt_SET_VALUE(widget, resource, value) do { \ | |
246 Arg al; \ | |
247 XtSetArg (al, resource, value); \ | |
248 XtSetValues (widget, &al, 1); \ | |
249 } while (0) | |
250 | |
251 #define Xt_GET_VALUE(widget, resource, location) do { \ | |
252 Arg al; \ | |
253 XtSetArg (al, resource, location); \ | |
254 XtGetValues (widget, &al, 1); \ | |
255 } while (0) | |
256 | |
257 /* The maximum number of widgets that can be displayed above the text | |
258 area at one time. Currently no more than 3 will ever actually be | |
259 displayed (menubar, psheet, debugger panel). */ | |
260 #define MAX_CONCURRENT_TOP_WIDGETS 8 | |
261 | |
262 struct x_frame | |
263 { | |
264 /* The widget of this frame. This is an EmacsShell or an | |
265 ExternalShell. */ | |
266 Widget widget; | |
267 | |
268 /* The parent of the EmacsFrame, the menubar, and the scrollbars. | |
269 This is an EmacsManager. */ | |
270 Widget container; | |
271 | |
272 /* The widget of the menubar, of whatever widget class it happens to be. */ | |
273 Widget menubar_widget; | |
274 | |
275 /* The widget of the edit portion of this frame; this is an EmacsFrame, | |
276 and the window of this widget is what the redisplay code draws on. */ | |
277 Widget edit_widget; | |
278 | |
279 /* Lists the widgets above the text area, in the proper order. | |
280 Used by the EmacsManager. */ | |
281 Widget top_widgets[MAX_CONCURRENT_TOP_WIDGETS]; | |
282 int num_top_widgets; | |
283 | |
284 /*************************** Miscellaneous **************************/ | |
285 | |
286 /* The icon pixmaps; these are Lisp_Image_Instance objects, or Qnil. */ | |
287 Lisp_Object icon_pixmap; | |
288 Lisp_Object icon_pixmap_mask; | |
289 | |
290 #ifdef HAVE_TOOLBARS | |
291 int old_toolbar_size[4]; | |
292 | |
293 /* We don't provide a mechanism for changing these after they are | |
294 initialized so we might as well keep pointers to them and avoid | |
295 lots of expensive calls to gc_cache_lookup. */ | |
296 GC toolbar_top_shadow_gc; | |
297 GC toolbar_bottom_shadow_gc; | |
298 GC toolbar_blank_background_gc; | |
299 GC toolbar_pixmap_background_gc; | |
300 #endif /* HAVE_TOOLBARS */ | |
301 | |
302 /* geometry string that ought to be freed. */ | |
303 char *geom_free_me_please; | |
304 | |
305 #ifdef HAVE_XIM | |
306 XPoint xic_spot; /* Spot Location cache */ | |
307 #ifdef XIM_XLIB | |
308 XIC xic; | |
309 /* Could get these at any time by asking xic, but... */ | |
310 XIMStyle xic_style; /* XIM Style cache */ | |
311 #endif /* XIM_XLIB */ | |
312 #endif /* HAVE_XIM */ | |
313 | |
314 /* 1 if the frame is completely visible on the display, 0 otherwise. | |
315 if 0 the frame may have been iconified or may be totally | |
316 or partially hidden by another X window */ | |
317 unsigned int totally_visible_p :1; | |
318 | |
319 /* NB: Both of the following flags are derivable from the 'shell' | |
320 field above, but it's easier if we also have them separately here. */ | |
321 | |
322 /* Are we a top-level frame? This means that our shell is a | |
323 TopLevelShell, and we should do certain things to interact with | |
324 the window manager. */ | |
325 unsigned int top_level_frame_p :1; | |
326 | |
327 #ifdef EXTERNAL_WIDGET | |
328 /* Are we using somebody else's window for our shell window? This | |
329 means that our shell is an ExternalShell. If this flag is set, then | |
330 `top_level_frame_p' will never be set. */ | |
331 unsigned int external_window_p :1; | |
332 #endif /* EXTERNAL_WIDGET */ | |
333 }; | |
334 | |
335 #define FRAME_X_DATA(f) FRAME_TYPE_DATA (f, x) | |
336 | |
337 #define FRAME_X_SHELL_WIDGET(f) (FRAME_X_DATA (f)->widget) | |
338 #define FRAME_X_CONTAINER_WIDGET(f) (FRAME_X_DATA (f)->container) | |
339 #define FRAME_X_MENUBAR_WIDGET(f) (FRAME_X_DATA (f)->menubar_widget) | |
340 #define FRAME_X_TEXT_WIDGET(f) (FRAME_X_DATA (f)->edit_widget) | |
341 #define FRAME_X_TOP_WIDGETS(f) (FRAME_X_DATA (f)->top_widgets) | |
342 #define FRAME_X_NUM_TOP_WIDGETS(f) (FRAME_X_DATA (f)->num_top_widgets) | |
343 | |
344 #define FRAME_X_ICON_PIXMAP(f) (FRAME_X_DATA (f)->icon_pixmap) | |
345 #define FRAME_X_ICON_PIXMAP_MASK(f) (FRAME_X_DATA (f)->icon_pixmap_mask) | |
346 | |
347 #ifdef HAVE_TOOLBARS | |
348 #define FRAME_X_OLD_TOOLBAR_SIZE(f, pos) (FRAME_X_DATA (f)->old_toolbar_size[pos]) | |
349 | |
350 #define FRAME_X_TOOLBAR_TOP_SHADOW_GC(f) (FRAME_X_DATA (f)->toolbar_top_shadow_gc) | |
351 #define FRAME_X_TOOLBAR_BOTTOM_SHADOW_GC(f) (FRAME_X_DATA (f)->toolbar_bottom_shadow_gc) | |
352 #define FRAME_X_TOOLBAR_BLANK_BACKGROUND_GC(f) (FRAME_X_DATA (f)->toolbar_blank_background_gc) | |
353 #define FRAME_X_TOOLBAR_PIXMAP_BACKGROUND_GC(f) (FRAME_X_DATA (f)->toolbar_pixmap_background_gc) | |
354 #endif /* HAVE_TOOLBARS */ | |
355 | |
356 #define FRAME_X_GEOM_FREE_ME_PLEASE(f) (FRAME_X_DATA (f)->geom_free_me_please) | |
357 | |
358 #define FRAME_X_TOTALLY_VISIBLE_P(f) (FRAME_X_DATA (f)->totally_visible_p) | |
359 #define FRAME_X_TOP_LEVEL_FRAME_P(f) (FRAME_X_DATA (f)->top_level_frame_p) | |
360 | |
361 #ifdef EXTERNAL_WIDGET | |
362 #define FRAME_X_EXTERNAL_WINDOW_P(f) (FRAME_X_DATA (f)->external_window_p) | |
363 #endif | |
364 | |
365 #ifdef HAVE_XIM | |
366 #define FRAME_X_XIC_SPOT(f) (FRAME_X_DATA (f)->xic_spot) | |
367 #ifdef XIM_XLIB | |
368 #define FRAME_X_XIC(f) (FRAME_X_DATA (f)->xic) | |
369 #define FRAME_X_XIC_STYLE(f) (FRAME_X_DATA (f)->xic_style) | |
370 #endif /* XIM_XLIB */ | |
371 #endif /* HAVE_XIM */ | |
372 | |
373 /* Variables associated with the X display frame this emacs is using. */ | |
374 extern XtAppContext Xt_app_con; | |
375 | |
376 extern Lisp_Object Vx_gc_pointer_shape; | |
377 extern Lisp_Object Vx_scrollbar_pointer_shape; | |
378 extern Lisp_Object Qx_error; | |
379 | |
380 extern struct console_type *x_console_type; | |
381 extern Lisp_Object Vdefault_x_device; | |
382 | |
383 /* Number of pixels below each line. */ | |
384 extern int x_interline_space; /* #### implement me */ | |
385 | |
386 extern int x_selection_timeout; | |
387 | |
388 struct frame *x_any_window_to_frame (struct device *d, Window); | |
389 struct frame *x_any_widget_or_parent_to_frame (struct device *d, | |
390 Widget widget); | |
391 struct frame *decode_x_frame (Lisp_Object); | |
392 struct frame *x_window_to_frame (struct device *d, Window); | |
393 struct device *get_device_from_display (Display *dpy); | |
394 struct device *decode_x_device (Lisp_Object); | |
395 | |
396 void x_handle_selection_notify (XSelectionEvent *event); | |
397 void x_handle_selection_request (XSelectionRequestEvent *event); | |
398 void x_handle_selection_clear (XSelectionClearEvent *event); | |
399 void x_handle_property_notify (XPropertyEvent *event); | |
400 | |
401 void Xatoms_of_xselect (struct device *d); | |
402 void Xatoms_of_objects_x (struct device *d); | |
403 | |
404 void x_wm_set_shell_iconic_p (Widget shell, int iconic_p); | |
405 void x_wm_set_cell_size (Widget wmshell, int cw, int ch); | |
406 void x_wm_set_variable_size (Widget wmshell, int width, int height); | |
407 | |
408 CONST char *x_event_name (int event_type); | |
409 int x_error_handler (Display *disp, XErrorEvent *event); | |
410 void expect_x_error (Display *dpy); | |
411 int x_error_occurred_p (Display *dpy); | |
412 int signal_if_x_error (Display *dpy, int resumable_p); | |
413 int x_IO_error_handler (Display *disp); | |
414 | |
415 void x_redraw_exposed_area (struct frame *f, int x, int y, | |
416 int width, int height); | |
417 void x_output_string (struct window *w, struct display_line *dl, | |
418 Emchar_dynarr *buf, int xpos, int xoffset, | |
419 int start_pixpos, int width, face_index findex, | |
420 int cursor, int cursor_start, int cursor_width, | |
421 int cursor_height); | |
422 void x_output_x_pixmap (struct frame *f, struct Lisp_Image_Instance *p, | |
423 int x, int y, int xoffset, int yoffset, | |
424 int width, int height, | |
425 unsigned long fg, unsigned long bg, | |
426 GC override_gc); | |
427 void x_output_shadows (struct frame *f, int x, int y, int width, | |
428 int height, GC top_shadow_gc, | |
429 GC bottom_shadow_gc, GC background_gc, | |
430 int shadow_thickness, int edges); | |
431 void x_generate_shadow_pixels (struct frame *f, | |
432 unsigned long *top_shadow, | |
433 unsigned long *bottom_shadow, | |
434 unsigned long background, | |
435 unsigned long core_background); | |
436 | |
437 int x_initialize_frame_menubar (struct frame *f); | |
438 void x_init_modifier_mapping (struct device *d); | |
439 | |
440 #define X_ERROR_OCCURRED(dpy, body) \ | |
441 (expect_x_error (dpy), body, x_error_occurred_p (dpy)) | |
442 | |
443 #define HANDLING_X_ERROR(dpy, body) \ | |
444 (expect_x_error (dpy), body, signal_if_x_error (dpy, 0)) | |
445 | |
446 void Initialize_Locale (void); | |
447 | |
448 #ifdef HAVE_XIM | |
449 | |
450 /* X Input Method `methods' */ | |
451 void XIM_init_device (struct device *d); | |
452 void XIM_init_frame (struct frame *f); | |
453 void XIM_SetSpotLocation (struct frame *f, int x, int y); | |
454 void XIM_SetGeometry (struct frame *f); | |
455 void XIM_focus_event (struct frame *f, int in_p); | |
456 | |
457 #ifdef XIM_XLIB | |
458 /* XtTypeConverter */ | |
459 Boolean EmacsXtCvtStringToXIMStyles ( | |
460 Display *dpy, | |
461 XrmValuePtr args, | |
462 Cardinal *num_args, | |
463 XrmValuePtr from, | |
464 XrmValuePtr to_in_out, | |
465 XtPointer *converter_data); | |
466 | |
467 /* XtDestructor */ | |
468 void EmacsFreeXIMStyles ( | |
469 XtAppContext app, | |
470 XrmValuePtr to, | |
471 XtPointer converter_data, | |
472 XrmValuePtr args, | |
473 Cardinal *num_args); | |
474 | |
475 #ifdef DEBUG_XEMACS | |
476 void describe_Window (Window win); | |
477 void describe_XFontSet (XFontSet font_set); | |
478 void describe_XIM (XIM im); | |
479 void describe_XIMStyle (XIMStyle style); | |
480 void describe_XIMStyles (XIMStyles *styles); | |
481 void describe_XIC (XIC ic); | |
482 void describe_event_mask (unsigned long mask); | |
483 void describe_XRectangle (char *name, XRectangle *rect); | |
484 void describe_Status (Status status); | |
485 #endif /* DEBUG_XEMACS */ | |
486 #endif /* XIM_XLIB */ | |
487 #endif /* HAVE_XIM */ | |
488 | |
489 extern int in_resource_setting; | |
490 extern int in_specifier_change_function; | |
491 | |
492 extern Lisp_Object Vx_initial_argv_list; /* #### ugh! */ | |
493 | |
494 #endif /* HAVE_X_WINDOWS */ | |
495 #endif /* _XEMACS_DEVICE_X_H_ */ |