]> Pileus Git - ~andy/gtk/blob - gdk/x11/gdkprivate-x11.h
0a832f9c48c78e5c44468ab7ce9925a07cccee6b
[~andy/gtk] / gdk / x11 / gdkprivate-x11.h
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 /*
21  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
22  * file for a list of people on the GTK+ Team.  See the ChangeLog
23  * files for a list of changes.  These files are distributed with
24  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
25  */
26
27 /*
28  * Private uninstalled header defining things local to X windowing code
29  */
30
31 #ifndef __GDK_PRIVATE_X11_H__
32 #define __GDK_PRIVATE_X11_H__
33
34 #include "gdkcursor.h"
35 #include "gdkprivate.h"
36 #include "gdkinternals.h"
37 #include "gdkx.h"
38 #include "gdkwindow-x11.h"
39 #include "gdkscreen-x11.h"
40 #include "gdkdisplay-x11.h"
41
42 #include <X11/Xlib.h>
43 #include <X11/Xutil.h>
44 #ifdef XINPUT_XFREE
45 #include <X11/extensions/XInput.h>
46 #endif
47 #ifdef XINPUT_2
48 #include <X11/extensions/XInput2.h>
49 #endif
50
51 #include <cairo-xlib.h>
52
53 void _gdk_x11_error_handler_push (void);
54 void _gdk_x11_error_handler_pop  (void);
55
56 Colormap _gdk_visual_get_x11_colormap (GdkVisual *visual);
57
58 gint          _gdk_x11_screen_visual_get_best_depth      (GdkScreen      *screen);
59 GdkVisualType _gdk_x11_screen_visual_get_best_type       (GdkScreen      *screen);
60 GdkVisual *   _gdk_x11_screen_get_system_visual          (GdkScreen      *screen);
61 GdkVisual*    _gdk_x11_screen_visual_get_best            (GdkScreen      *screen);
62 GdkVisual*    _gdk_x11_screen_visual_get_best_with_depth (GdkScreen      *screen,
63                                                           gint            depth);
64 GdkVisual*    _gdk_x11_screen_visual_get_best_with_type  (GdkScreen      *screen,
65                                                           GdkVisualType   visual_type);
66 GdkVisual*    _gdk_x11_screen_visual_get_best_with_both  (GdkScreen      *screen,
67                                                           gint            depth,
68                                                           GdkVisualType   visual_type);
69 void          _gdk_x11_screen_query_depths               (GdkScreen      *screen,
70                                                           gint          **depths,
71                                                           gint           *count);
72 void          _gdk_x11_screen_query_visual_types         (GdkScreen      *screen,
73                                                           GdkVisualType **visual_types,
74                                                           gint           *count);
75 GList *       _gdk_x11_screen_list_visuals               (GdkScreen      *screen);
76
77
78
79 void _gdk_x11_display_add_window    (GdkDisplay *display,
80                                      XID        *xid,
81                                      GdkWindow  *window);
82 void _gdk_x11_display_remove_window (GdkDisplay *display,
83                                      XID         xid);
84
85 gint _gdk_x11_display_send_xevent (GdkDisplay *display,
86                                    Window      window,
87                                    gboolean    propagate,
88                                    glong       event_mask,
89                                    XEvent     *event_send);
90
91 /* Routines from gdkgeometry-x11.c */
92 void _gdk_x11_window_move_resize_child (GdkWindow     *window,
93                                         gint           x,
94                                         gint           y,
95                                         gint           width,
96                                         gint           height);
97 void _gdk_x11_window_process_expose    (GdkWindow     *window,
98                                         gulong         serial,
99                                         GdkRectangle  *area);
100
101 void     _gdk_x11_window_sync_rendering    (GdkWindow       *window);
102 gboolean _gdk_x11_window_simulate_key      (GdkWindow       *window,
103                                             gint             x,
104                                             gint             y,
105                                             guint            keyval,
106                                             GdkModifierType  modifiers,
107                                             GdkEventType     key_pressrelease);
108 gboolean _gdk_x11_window_simulate_button   (GdkWindow       *window,
109                                             gint             x,
110                                             gint             y,
111                                             guint            button,
112                                             GdkModifierType  modifiers,
113                                             GdkEventType     button_pressrelease);
114 gboolean _gdk_x11_window_get_property      (GdkWindow    *window,
115                                             GdkAtom       property,
116                                             GdkAtom       type,
117                                             gulong        offset,
118                                             gulong        length,
119                                             gint          pdelete,
120                                             GdkAtom      *actual_property_type,
121                                             gint         *actual_format_type,
122                                             gint         *actual_length,
123                                             guchar      **data);
124 void     _gdk_x11_window_change_property   (GdkWindow    *window,
125                                             GdkAtom       property,
126                                             GdkAtom       type,
127                                             gint          format,
128                                             GdkPropMode   mode,
129                                             const guchar *data,
130                                             gint          nelements);
131 void     _gdk_x11_window_delete_property   (GdkWindow    *window,
132                                             GdkAtom       property);
133
134 gboolean _gdk_x11_window_queue_antiexpose  (GdkWindow *window,
135                                             cairo_region_t *area);
136 void     _gdk_x11_window_translate         (GdkWindow *window,
137                                             cairo_region_t *area,
138                                             gint       dx,
139                                             gint       dy);
140
141 void     _gdk_x11_display_free_translate_queue (GdkDisplay *display);
142
143 void     _gdk_x11_selection_window_destroyed   (GdkWindow            *window);
144 gboolean _gdk_x11_selection_filter_clear_event (XSelectionClearEvent *event);
145
146 cairo_region_t* _gdk_x11_xwindow_get_shape  (Display *xdisplay,
147                                              Window   window,
148                                              gint     shape_type);
149
150 void     _gdk_x11_region_get_xrectangles   (const cairo_region_t  *region,
151                                             gint                   x_offset,
152                                             gint                   y_offset,
153                                             XRectangle           **rects,
154                                             gint                  *n_rects);
155
156 gboolean _gdk_x11_moveresize_handle_event   (XEvent     *event);
157 gboolean _gdk_x11_moveresize_configure_done (GdkDisplay *display,
158                                              GdkWindow  *window);
159
160 void     _gdk_x11_keymap_state_changed   (GdkDisplay      *display,
161                                           XEvent          *event);
162 void     _gdk_x11_keymap_keys_changed    (GdkDisplay      *display);
163 gint     _gdk_x11_get_group_for_state    (GdkDisplay      *display,
164                                           GdkModifierType  state);
165 void     _gdk_x11_keymap_add_virt_mods   (GdkKeymap       *keymap,
166                                           GdkModifierType *modifiers);
167 gboolean _gdk_x11_keymap_key_is_modifier (GdkKeymap       *keymap,
168                                           guint            keycode);
169
170 void _gdk_x11_windowing_init    (void);
171
172 void _gdk_x11_window_grab_check_unmap   (GdkWindow *window,
173                                          gulong     serial);
174 void _gdk_x11_window_grab_check_destroy (GdkWindow *window);
175
176 gboolean _gdk_x11_display_is_root_window (GdkDisplay *display,
177                                           Window      xroot_window);
178
179 GdkDisplay * _gdk_x11_display_open            (const gchar *display_name);
180 void _gdk_x11_display_make_default            (GdkDisplay *display);
181 void _gdk_x11_display_update_grab_info        (GdkDisplay *display,
182                                                GdkDevice  *device,
183                                                gint        status);
184 void _gdk_x11_display_update_grab_info_ungrab (GdkDisplay *display,
185                                                GdkDevice  *device,
186                                                guint32     time,
187                                                gulong      serial);
188 void _gdk_x11_display_queue_events            (GdkDisplay *display);
189
190
191 GdkAppLaunchContext *_gdk_x11_display_get_app_launch_context (GdkDisplay *display);
192 Window      _gdk_x11_display_get_drag_protocol     (GdkDisplay      *display,
193                                                     Window           xid,
194                                                     GdkDragProtocol *protocol,
195                                                     guint           *version);
196
197 gboolean    _gdk_x11_display_set_selection_owner   (GdkDisplay *display,
198                                                     GdkWindow  *owner,
199                                                     GdkAtom     selection,
200                                                     guint32     time,
201                                                     gboolean    send_event);
202 GdkWindow * _gdk_x11_display_get_selection_owner   (GdkDisplay *display,
203                                                     GdkAtom     selection);
204 void        _gdk_x11_display_send_selection_notify (GdkDisplay       *display,
205                                                     GdkWindow        *requestor,
206                                                     GdkAtom          selection,
207                                                     GdkAtom          target,
208                                                     GdkAtom          property,
209                                                     guint32          time);
210 gint        _gdk_x11_display_get_selection_property (GdkDisplay     *display,
211                                                      GdkWindow      *requestor,
212                                                      guchar        **data,
213                                                      GdkAtom        *ret_type,
214                                                      gint           *ret_format);
215 void        _gdk_x11_display_convert_selection      (GdkDisplay     *display,
216                                                      GdkWindow      *requestor,
217                                                      GdkAtom         selection,
218                                                      GdkAtom         target,
219                                                      guint32         time);
220
221 gint        _gdk_x11_display_text_property_to_utf8_list (GdkDisplay     *display,
222                                                          GdkAtom         encoding,
223                                                          gint            format,
224                                                          const guchar   *text,
225                                                          gint            length,
226                                                          gchar        ***list);
227 gchar *     _gdk_x11_display_utf8_to_string_target      (GdkDisplay     *displayt,
228                                                          const gchar    *str);
229
230 void _gdk_x11_device_check_extension_events   (GdkDevice  *device);
231
232 GdkDeviceManager *_gdk_x11_device_manager_new (GdkDisplay *display);
233
234 #ifdef XINPUT_XFREE
235 void _gdk_x11_device_xi_update_window_info (GdkWindow *window);
236
237 void _gdk_x11_device_xi_update_axes        (GdkDevice *device,
238                                             gint       axes_count,
239                                             gint       first_axis,
240                                             gint      *axis_data);
241 void _gdk_x11_device_xi_translate_axes     (GdkDevice *device,
242                                             GdkWindow *window,
243                                             gint      *axis_data,
244                                             gdouble   *axes,
245                                             gdouble   *x,
246                                             gdouble   *y);
247 #endif
248
249 #ifdef XINPUT_2
250 guchar * _gdk_x11_device_xi2_translate_event_mask (GdkEventMask     event_mask,
251                                                    gint            *len);
252 guint    _gdk_x11_device_xi2_translate_state      (XIModifierState *mods_state,
253                                                    XIButtonState   *buttons_state,
254                                                    XIGroupState    *group_state);
255 gint     _gdk_x11_device_xi2_get_id               (GdkX11DeviceXI2 *device);
256
257 GdkDevice * _gdk_x11_device_manager_xi2_lookup    (GdkX11DeviceManagerXI2 *device_manager_xi2,
258                                                    gint                    device_id);
259
260 #endif
261
262 void     _gdk_x11_event_translate_keyboard_string (GdkEventKey *event);
263
264 void _gdk_x11_display_manager_add_display      (GdkDisplayManager *manager,
265                                                 GdkDisplay        *display);
266 void _gdk_x11_display_manager_remove_display   (GdkDisplayManager *manager,
267                                                 GdkDisplay        *display);
268
269 GdkAtom _gdk_x11_display_manager_atom_intern   (GdkDisplayManager *manager,
270                                                 const gchar       *atom_name,
271                                                 gboolean           copy_name);
272 gchar * _gdk_x11_display_manager_get_atom_name (GdkDisplayManager *manager,
273                                                 GdkAtom            atom);
274 guint   _gdk_x11_display_manager_lookup_keyval (GdkDisplayManager *manager,
275                                                 const gchar       *name);
276 gchar * _gdk_x11_display_manager_get_keyval_name (GdkDisplayManager *manager,
277                                                   guint              keyval);
278 void    _gdk_x11_display_manager_keyval_convert_case (GdkDisplayManager *manager,
279                                                       guint              symbol,
280                                                       guint             *lower,
281                                                       guint             *upper);
282
283 GdkCursor *_gdk_x11_display_get_cursor_for_type     (GdkDisplay    *display,
284                                                      GdkCursorType  type);
285 GdkCursor *_gdk_x11_display_get_cursor_for_name     (GdkDisplay    *display,
286                                                      const gchar   *name);
287 GdkCursor *_gdk_x11_display_get_cursor_for_pixbuf   (GdkDisplay    *display,
288                                                      GdkPixbuf     *pixbuf,
289                                                      gint           x,
290                                                      gint           y);
291 gboolean   _gdk_x11_display_supports_cursor_alpha   (GdkDisplay    *display);
292 gboolean   _gdk_x11_display_supports_cursor_color   (GdkDisplay    *display);
293 void       _gdk_x11_display_get_default_cursor_size (GdkDisplay *display,
294                                                      guint      *width,
295                                                      guint      *height);
296 void       _gdk_x11_display_get_maximal_cursor_size (GdkDisplay *display,
297                                                      guint      *width,
298                                                      guint      *height);
299 void       _gdk_x11_display_before_process_all_updates (GdkDisplay *display);
300 void       _gdk_x11_display_after_process_all_updates  (GdkDisplay *display);
301 void       _gdk_x11_display_create_window_impl     (GdkDisplay    *display,
302                                                     GdkWindow     *window,
303                                                     GdkWindow     *real_parent,
304                                                     GdkScreen     *screen,
305                                                     GdkEventMask   event_mask,
306                                                     GdkWindowAttr *attributes,
307                                                     gint           attributes_mask);
308
309 void _gdk_x11_precache_atoms (GdkDisplay          *display,
310                               const gchar * const *atom_names,
311                               gint                 n_atoms);
312
313 GdkFilterReturn
314 _gdk_x11_dnd_filter (GdkXEvent *xev,
315                      GdkEvent  *event,
316                      gpointer   data);
317
318 void _gdk_x11_screen_init_root_window (GdkScreen *screen);
319 void _gdk_x11_screen_init_visuals     (GdkScreen *screen);
320 void _gdk_x11_screen_init_events      (GdkScreen *screen);
321
322 void _gdk_x11_cursor_update_theme (GdkCursor *cursor);
323 void _gdk_x11_cursor_display_finalize (GdkDisplay *display);
324
325 void _gdk_x11_window_register_dnd (GdkWindow *window);
326
327 gboolean _gdk_x11_get_xft_setting (GdkScreen   *screen,
328                                    const gchar *name,
329                                    GValue      *value);
330
331 GdkGrabStatus _gdk_x11_convert_grab_status (gint status);
332
333 cairo_surface_t * _gdk_x11_window_create_bitmap_surface (GdkWindow *window,
334                                                          int        width,
335                                                          int        height);
336
337 extern const gint        _gdk_x11_event_mask_table[];
338 extern const gint        _gdk_x11_event_mask_table_size;
339
340 #define GDK_SCREEN_DISPLAY(screen)    (GDK_X11_SCREEN (screen)->display)
341 #define GDK_SCREEN_XROOTWIN(screen)   (GDK_X11_SCREEN (screen)->xroot_window)
342 #define GDK_WINDOW_SCREEN(win)        (gdk_window_get_screen (win))
343 #define GDK_WINDOW_DISPLAY(win)       (GDK_X11_SCREEN (GDK_WINDOW_SCREEN (win))->display)
344 #define GDK_WINDOW_XROOTWIN(win)      (GDK_X11_SCREEN (GDK_WINDOW_SCREEN (win))->xroot_window)
345 #define GDK_GC_DISPLAY(gc)            (GDK_SCREEN_DISPLAY (GDK_GC_X11(gc)->screen))
346 #define GDK_WINDOW_IS_X11(win)        (GDK_IS_WINDOW_IMPL_X11 ((win)->impl))
347
348 /* override some macros from gdkx.h with direct-access variants */
349 #undef GDK_DISPLAY_XDISPLAY
350 #undef GDK_WINDOW_XDISPLAY
351 #undef GDK_WINDOW_XID
352 #undef GDK_SCREEN_XDISPLAY
353
354 #define GDK_DISPLAY_XDISPLAY(display) (GDK_X11_DISPLAY(display)->xdisplay)
355 #define GDK_WINDOW_XDISPLAY(win)      (GDK_X11_SCREEN (GDK_WINDOW_SCREEN (win))->xdisplay)
356 #define GDK_WINDOW_XID(win)           (GDK_WINDOW_IMPL_X11(GDK_WINDOW (win)->impl)->xid)
357 #define GDK_SCREEN_XDISPLAY(screen)   (GDK_X11_SCREEN (screen)->xdisplay)
358
359 #endif /* __GDK_PRIVATE_X11_H__ */