1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
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.
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.
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/>.
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/.
26 * Private uninstalled header defining things local to X windowing code
29 #ifndef __GDK_PRIVATE_X11_H__
30 #define __GDK_PRIVATE_X11_H__
32 #include "gdkcursor.h"
33 #include "gdkprivate.h"
34 #include "gdkinternals.h"
36 #include "gdkwindow-x11.h"
37 #include "gdkscreen-x11.h"
38 #include "gdkdisplay-x11.h"
41 #include <X11/Xutil.h>
43 #include <X11/extensions/XInput2.h>
46 #include <cairo-xlib.h>
48 void _gdk_x11_error_handler_push (void);
49 void _gdk_x11_error_handler_pop (void);
51 Colormap _gdk_visual_get_x11_colormap (GdkVisual *visual);
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,
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,
63 GdkVisualType visual_type);
64 void _gdk_x11_screen_query_depths (GdkScreen *screen,
67 void _gdk_x11_screen_query_visual_types (GdkScreen *screen,
68 GdkVisualType **visual_types,
70 GList * _gdk_x11_screen_list_visuals (GdkScreen *screen);
74 void _gdk_x11_display_add_window (GdkDisplay *display,
77 void _gdk_x11_display_remove_window (GdkDisplay *display,
80 gint _gdk_x11_display_send_xevent (GdkDisplay *display,
86 /* Routines from gdkgeometry-x11.c */
87 void _gdk_x11_window_move_resize_child (GdkWindow *window,
92 void _gdk_x11_window_process_expose (GdkWindow *window,
96 void _gdk_x11_window_sync_rendering (GdkWindow *window);
97 gboolean _gdk_x11_window_simulate_key (GdkWindow *window,
101 GdkModifierType modifiers,
102 GdkEventType key_pressrelease);
103 gboolean _gdk_x11_window_simulate_button (GdkWindow *window,
107 GdkModifierType modifiers,
108 GdkEventType button_pressrelease);
109 gboolean _gdk_x11_window_get_property (GdkWindow *window,
115 GdkAtom *actual_property_type,
116 gint *actual_format_type,
119 void _gdk_x11_window_change_property (GdkWindow *window,
126 void _gdk_x11_window_delete_property (GdkWindow *window,
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,
136 void _gdk_x11_display_free_translate_queue (GdkDisplay *display);
138 void _gdk_x11_selection_window_destroyed (GdkWindow *window);
139 gboolean _gdk_x11_selection_filter_clear_event (XSelectionClearEvent *event);
141 cairo_region_t* _gdk_x11_xwindow_get_shape (Display *xdisplay,
145 void _gdk_x11_region_get_xrectangles (const cairo_region_t *region,
151 gboolean _gdk_x11_moveresize_handle_event (XEvent *event);
152 gboolean _gdk_x11_moveresize_configure_done (GdkDisplay *display,
155 void _gdk_x11_keymap_state_changed (GdkDisplay *display,
157 void _gdk_x11_keymap_keys_changed (GdkDisplay *display);
158 void _gdk_x11_keymap_add_virt_mods (GdkKeymap *keymap,
159 GdkModifierType *modifiers);
161 void _gdk_x11_windowing_init (void);
163 void _gdk_x11_window_grab_check_unmap (GdkWindow *window,
165 void _gdk_x11_window_grab_check_destroy (GdkWindow *window);
167 gboolean _gdk_x11_display_is_root_window (GdkDisplay *display,
168 Window xroot_window);
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,
175 void _gdk_x11_display_update_grab_info_ungrab (GdkDisplay *display,
179 void _gdk_x11_display_queue_events (GdkDisplay *display);
182 GdkAppLaunchContext *_gdk_x11_display_get_app_launch_context (GdkDisplay *display);
183 Window _gdk_x11_display_get_drag_protocol (GdkDisplay *display,
185 GdkDragProtocol *protocol,
188 gboolean _gdk_x11_display_set_selection_owner (GdkDisplay *display,
192 gboolean send_event);
193 GdkWindow * _gdk_x11_display_get_selection_owner (GdkDisplay *display,
195 void _gdk_x11_display_send_selection_notify (GdkDisplay *display,
196 GdkWindow *requestor,
201 gint _gdk_x11_display_get_selection_property (GdkDisplay *display,
202 GdkWindow *requestor,
206 void _gdk_x11_display_convert_selection (GdkDisplay *display,
207 GdkWindow *requestor,
212 gint _gdk_x11_display_text_property_to_utf8_list (GdkDisplay *display,
218 gchar * _gdk_x11_display_utf8_to_string_target (GdkDisplay *displayt,
221 void _gdk_x11_device_check_extension_events (GdkDevice *device);
223 GdkDeviceManager *_gdk_x11_device_manager_new (GdkDisplay *display);
226 guchar * _gdk_x11_device_xi2_translate_event_mask (GdkX11DeviceManagerXI2 *device_manager_xi2,
227 GdkEventMask event_mask,
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);
234 GdkDevice * _gdk_x11_device_manager_xi2_lookup (GdkX11DeviceManagerXI2 *device_manager_xi2,
236 void _gdk_x11_device_xi2_add_scroll_valuator (GdkX11DeviceXI2 *device,
238 GdkScrollDirection direction,
240 gboolean _gdk_x11_device_xi2_get_scroll_delta (GdkX11DeviceXI2 *device,
242 gdouble valuator_value,
243 GdkScrollDirection *direction_ret,
245 void _gdk_device_xi2_reset_scroll_valuators (GdkX11DeviceXI2 *device);
249 void _gdk_x11_event_translate_keyboard_string (GdkEventKey *event);
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);
256 GdkAtom _gdk_x11_display_manager_atom_intern (GdkDisplayManager *manager,
257 const gchar *atom_name,
259 gchar * _gdk_x11_display_manager_get_atom_name (GdkDisplayManager *manager,
261 guint _gdk_x11_display_manager_lookup_keyval (GdkDisplayManager *manager,
263 gchar * _gdk_x11_display_manager_get_keyval_name (GdkDisplayManager *manager,
265 void _gdk_x11_display_manager_keyval_convert_case (GdkDisplayManager *manager,
270 GdkCursor *_gdk_x11_display_get_cursor_for_type (GdkDisplay *display,
272 GdkCursor *_gdk_x11_display_get_cursor_for_name (GdkDisplay *display,
274 GdkCursor *_gdk_x11_display_get_cursor_for_pixbuf (GdkDisplay *display,
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,
283 void _gdk_x11_display_get_maximal_cursor_size (GdkDisplay *display,
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,
290 GdkWindow *real_parent,
292 GdkEventMask event_mask,
293 GdkWindowAttr *attributes,
294 gint attributes_mask);
296 void _gdk_x11_precache_atoms (GdkDisplay *display,
297 const gchar * const *atom_names,
301 _gdk_x11_dnd_filter (GdkXEvent *xev,
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);
309 void _gdk_x11_cursor_update_theme (GdkCursor *cursor);
310 void _gdk_x11_cursor_display_finalize (GdkDisplay *display);
312 void _gdk_x11_window_register_dnd (GdkWindow *window);
314 GdkDragContext * _gdk_x11_window_drag_begin (GdkWindow *window,
318 gboolean _gdk_x11_get_xft_setting (GdkScreen *screen,
322 GdkGrabStatus _gdk_x11_convert_grab_status (gint status);
324 cairo_surface_t * _gdk_x11_window_create_bitmap_surface (GdkWindow *window,
328 extern const gint _gdk_x11_event_mask_table[];
329 extern const gint _gdk_x11_event_mask_table_size;
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))
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
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)
350 #endif /* __GDK_PRIVATE_X11_H__ */