]> Pileus Git - ~andy/gtk/blob - gdk/x11/gdkprivate-x11.h
67e23a1e860d1c2c41ac1b9c9bfee9eeb590c914
[~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 #include <cairo-xlib.h>
42
43 typedef struct _GdkCursorPrivate       GdkCursorPrivate;
44
45 struct _GdkCursorPrivate
46 {
47   GdkCursor cursor;
48   Cursor xcursor;
49   GdkDisplay *display;
50   gchar *name;
51   guint serial;
52 };
53
54 void _gdk_x11_error_handler_push (void);
55 void _gdk_x11_error_handler_pop  (void);
56
57 Colormap _gdk_visual_get_x11_colormap (GdkVisual *visual);
58
59 gint          _gdk_screen_x11_visual_get_best_depth      (GdkScreen      *screen);
60 GdkVisualType _gdk_screen_x11_visual_get_best_type       (GdkScreen      *screen);
61 GdkVisual *   _gdk_screen_x11_get_system_visual          (GdkScreen      *screen);
62 GdkVisual*    _gdk_screen_x11_visual_get_best            (GdkScreen      *screen);
63 GdkVisual*    _gdk_screen_x11_visual_get_best_with_depth (GdkScreen      *screen,
64                                                           gint            depth);
65 GdkVisual*    _gdk_screen_x11_visual_get_best_with_type  (GdkScreen      *screen,
66                                                           GdkVisualType   visual_type);
67 GdkVisual*    _gdk_screen_x11_visual_get_best_with_both  (GdkScreen      *screen,
68                                                           gint            depth,
69                                                           GdkVisualType   visual_type);
70 void          _gdk_screen_x11_query_depths               (GdkScreen      *screen,
71                                                           gint          **depths,
72                                                           gint           *count);
73 void          _gdk_screen_x11_query_visual_types         (GdkScreen      *screen,
74                                                           GdkVisualType **visual_types,
75                                                           gint           *count);
76 GList *       _gdk_screen_x11_list_visuals               (GdkScreen      *screen);
77
78
79
80 void _gdk_x11_display_add_window    (GdkDisplay *display,
81                                      XID        *xid,
82                                      GdkWindow  *window);
83 void _gdk_x11_display_remove_window (GdkDisplay *display,
84                                      XID         xid);
85
86 gint _gdk_x11_display_send_xevent (GdkDisplay *display,
87                                    Window      window,
88                                    gboolean    propagate,
89                                    glong       event_mask,
90                                    XEvent     *event_send);
91
92 /* Routines from gdkgeometry-x11.c */
93 void _gdk_x11_window_move_resize_child (GdkWindow     *window,
94                                         gint           x,
95                                         gint           y,
96                                         gint           width,
97                                         gint           height);
98 void _gdk_x11_window_process_expose    (GdkWindow     *window,
99                                         gulong         serial,
100                                         GdkRectangle  *area);
101
102 void     _gdk_x11_window_sync_rendering    (GdkWindow       *window);
103 gboolean _gdk_x11_window_simulate_key      (GdkWindow       *window,
104                                             gint             x,
105                                             gint             y,
106                                             guint            keyval,
107                                             GdkModifierType  modifiers,
108                                             GdkEventType     key_pressrelease);
109 gboolean _gdk_x11_window_simulate_button   (GdkWindow       *window,
110                                             gint             x,
111                                             gint             y,
112                                             guint            button,
113                                             GdkModifierType  modifiers,
114                                             GdkEventType     button_pressrelease);
115
116 gboolean _gdk_x11_window_queue_antiexpose  (GdkWindow *window,
117                                             cairo_region_t *area);
118 void     _gdk_x11_window_translate         (GdkWindow *window,
119                                             cairo_region_t *area,
120                                             gint       dx,
121                                             gint       dy);
122
123 void     _gdk_selection_window_destroyed   (GdkWindow            *window);
124 gboolean _gdk_selection_filter_clear_event (XSelectionClearEvent *event);
125
126 cairo_region_t* _gdk_x11_xwindow_get_shape  (Display *xdisplay,
127                                              Window   window,
128                                              gint     shape_type);
129
130 void     _gdk_x11_region_get_xrectangles   (const cairo_region_t  *region,
131                                             gint                   x_offset,
132                                             gint                   y_offset,
133                                             XRectangle           **rects,
134                                             gint                  *n_rects);
135
136 gboolean _gdk_x11_moveresize_handle_event   (XEvent     *event);
137 gboolean _gdk_x11_moveresize_configure_done (GdkDisplay *display,
138                                              GdkWindow  *window);
139
140 GType    _gdk_keymap_x11_get_type        (void);
141
142 void     _gdk_x11_keymap_state_changed   (GdkDisplay      *display,
143                                           XEvent          *event);
144 void     _gdk_x11_keymap_keys_changed    (GdkDisplay      *display);
145 gint     _gdk_x11_get_group_for_state    (GdkDisplay      *display,
146                                           GdkModifierType  state);
147 void     _gdk_x11_keymap_add_virt_mods   (GdkKeymap       *keymap,
148                                           GdkModifierType *modifiers);
149 gboolean _gdk_x11_keymap_key_is_modifier (GdkKeymap       *keymap,
150                                           guint            keycode);
151
152 void _gdk_x11_initialize_locale (void);
153 void _gdk_x11_windowing_init    (void);
154
155 void _gdk_x11_window_grab_check_unmap   (GdkWindow *window,
156                                          gulong     serial);
157 void _gdk_x11_window_grab_check_destroy (GdkWindow *window);
158
159 gboolean _gdk_x11_display_is_root_window (GdkDisplay *display,
160                                           Window      xroot_window);
161
162 GdkDisplay * _gdk_x11_display_open            (const gchar *display_name);
163 void _gdk_x11_display_make_default            (GdkDisplay *display);
164 void _gdk_x11_display_update_grab_info        (GdkDisplay *display,
165                                                GdkDevice  *device,
166                                                gint        status);
167 void _gdk_x11_display_update_grab_info_ungrab (GdkDisplay *display,
168                                                GdkDevice  *device,
169                                                guint32     time,
170                                                gulong      serial);
171 void _gdk_x11_display_queue_events            (GdkDisplay *display);
172 void _gdk_x11_device_check_extension_events   (GdkDevice  *device);
173
174 GdkDeviceManager *_gdk_x11_device_manager_new (GdkDisplay *display);
175
176 void _gdk_x11_display_manager_add_display      (GdkDisplayManager *manager,
177                                                 GdkDisplay        *display);
178 void _gdk_x11_display_manager_remove_display   (GdkDisplayManager *manager,
179                                                 GdkDisplay        *display);
180
181 GdkAtom _gdk_x11_display_manager_atom_intern   (GdkDisplayManager *manager,
182                                                 const gchar       *atom_name,
183                                                 gboolean           copy_name);
184 gchar * _gdk_x11_display_manager_get_atom_name (GdkDisplayManager *manager,
185                                                 GdkAtom            atom);
186
187 GdkCursor *_gdk_x11_display_get_cursor_for_type     (GdkDisplay    *display,
188                                                      GdkCursorType  type);
189 GdkCursor *_gdk_x11_display_get_cursor_for_name     (GdkDisplay    *display,
190                                                      const gchar   *name);
191 GdkCursor *_gdk_x11_display_get_cursor_for_pixbuf   (GdkDisplay    *display,
192                                                      GdkPixbuf     *pixbuf,
193                                                      gint           x,
194                                                      gint           y);
195 gboolean   _gdk_x11_display_supports_cursor_alpha   (GdkDisplay    *display);
196 gboolean   _gdk_x11_display_supports_cursor_color   (GdkDisplay    *display);
197 void       _gdk_x11_display_get_default_cursor_size (GdkDisplay *display,
198                                                      guint      *width,
199                                                      guint      *height);
200 void       _gdk_x11_display_get_maximal_cursor_size (GdkDisplay *display,
201                                                      guint      *width,
202                                                      guint      *height);
203 void       _gdk_x11_display_before_process_all_updates (GdkDisplay *display);
204 void       _gdk_x11_display_after_process_all_updates  (GdkDisplay *display);
205 void       _gdk_x11_display_create_window_impl     (GdkDisplay    *display,
206                                                     GdkWindow     *window,
207                                                     GdkWindow     *real_parent,
208                                                     GdkScreen     *screen,
209                                                     GdkEventMask   event_mask,
210                                                     GdkWindowAttr *attributes,
211                                                     gint           attributes_mask);
212
213 void _gdk_x11_precache_atoms (GdkDisplay          *display,
214                               const gchar * const *atom_names,
215                               gint                 n_atoms);
216
217 void _gdk_events_init                 (GdkDisplay *display);
218 void _gdk_events_uninit               (GdkDisplay *display);
219 void _gdk_x11_dnd_init                (GdkDisplay *display);
220
221 void _gdk_x11_screen_init_root_window (GdkScreen *screen);
222 void _gdk_x11_screen_init_visuals     (GdkScreen *screen);
223 void _gdk_x11_screen_init_events      (GdkScreen *screen);
224
225 void _gdk_x11_cursor_update_theme (GdkCursor *cursor);
226 void _gdk_x11_cursor_display_finalize (GdkDisplay *display);
227
228 void _gdk_x11_window_register_dnd (GdkWindow *window);
229
230 gboolean _gdk_x11_get_xft_setting (GdkScreen   *screen,
231                                    const gchar *name,
232                                    GValue      *value);
233
234 GdkGrabStatus _gdk_x11_convert_grab_status (gint status);
235
236 cairo_surface_t * _gdk_x11_window_create_bitmap_surface (GdkWindow *window,
237                                                          int        width,
238                                                          int        height);
239
240 extern const gint        _gdk_x11_event_mask_table[];
241 extern const gint        _gdk_x11_event_mask_table_size;
242
243 #define GDK_SCREEN_DISPLAY(screen)    (GDK_SCREEN_X11 (screen)->display)
244 #define GDK_SCREEN_XROOTWIN(screen)   (GDK_SCREEN_X11 (screen)->xroot_window)
245 #define GDK_WINDOW_SCREEN(win)        (gdk_window_get_screen (win))
246 #define GDK_WINDOW_DISPLAY(win)       (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->display)
247 #define GDK_WINDOW_XROOTWIN(win)      (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->xroot_window)
248 #define GDK_GC_DISPLAY(gc)            (GDK_SCREEN_DISPLAY (GDK_GC_X11(gc)->screen))
249 #define GDK_WINDOW_IS_X11(win)        (GDK_IS_WINDOW_IMPL_X11 ((win)->impl))
250
251 /* override some macros from gdkx.h with direct-access variants */
252 #undef GDK_DISPLAY_XDISPLAY
253 #undef GDK_WINDOW_XDISPLAY
254 #undef GDK_WINDOW_XID
255 #undef GDK_SCREEN_XDISPLAY
256
257 #define GDK_DISPLAY_XDISPLAY(display) (GDK_DISPLAY_X11(display)->xdisplay)
258 #define GDK_WINDOW_XDISPLAY(win)      (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->xdisplay)
259 #define GDK_WINDOW_XID(win)           (GDK_WINDOW_IMPL_X11(GDK_WINDOW (win)->impl)->xid)
260 #define GDK_SCREEN_XDISPLAY(screen)   (GDK_SCREEN_X11 (screen)->xdisplay)
261
262 #endif /* __GDK_PRIVATE_X11_H__ */