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