]> Pileus Git - ~andy/gtk/blob - gdk/gdkdisplay.h
API: gdk: gdk_display_warp_device() => gdk_device_warp()
[~andy/gtk] / gdk / gdkdisplay.h
1 /*
2  * gdkdisplay.h
3  * 
4  * Copyright 2001 Sun Microsystems Inc. 
5  *
6  * Erwann Chenede <erwann.chenede@sun.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this library; if not, write to the
20  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23
24 #if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
25 #error "Only <gdk/gdk.h> can be included directly."
26 #endif
27
28 #ifndef __GDK_DISPLAY_H__
29 #define __GDK_DISPLAY_H__
30
31 #include <gdk/gdktypes.h>
32 #include <gdk/gdkevents.h>
33 #include <gdk/gdkdevicemanager.h>
34
35 G_BEGIN_DECLS
36
37 #define GDK_TYPE_DISPLAY              (gdk_display_get_type ())
38 #define GDK_DISPLAY_OBJECT(object)    (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY, GdkDisplay))
39 #define GDK_DISPLAY_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY, GdkDisplayClass))
40 #define GDK_IS_DISPLAY(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DISPLAY))
41 #define GDK_IS_DISPLAY_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY))
42 #define GDK_DISPLAY_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY, GdkDisplayClass))
43
44 typedef struct _GdkDisplayPointerHooks GdkDisplayPointerHooks;
45 typedef struct _GdkDisplayDeviceHooks GdkDisplayDeviceHooks;
46
47 /**
48  * GdkDisplayPointerHooks:
49  * @get_pointer: Obtains the current pointer position and modifier state.
50  *  The position is given in coordinates relative to the screen containing
51  *  the pointer, which is returned in @screen.
52  * @window_get_pointer: Obtains the window underneath the mouse pointer.
53  *  Current pointer position and modifier state are returned in @x, @y and
54  *  @mask. The position is given in coordinates relative to @window.
55  * @window_at_pointer: Obtains the window underneath the mouse pointer,
56  *  returning the location of that window in @win_x, @win_y. Returns %NULL
57  *  if the window under the mouse pointer is not known to GDK (for example,
58  *  belongs to another application).
59  *
60  * A table of pointers to functions for getting quantities related to
61  * the current pointer position. Each #GdkDisplay has a table of this type,
62  * which can be set using gdk_display_set_pointer_hooks().
63  *
64  * This is only useful for such low-level tools as an event recorder.
65  * Applications should never have any reason to use this facility
66  *
67  * Since: 2.2
68  */
69 struct _GdkDisplayPointerHooks
70 {
71   void (*get_pointer)              (GdkDisplay      *display,
72                                     GdkScreen      **screen,
73                                     gint            *x,
74                                     gint            *y,
75                                     GdkModifierType *mask);
76   GdkWindow* (*window_get_pointer) (GdkDisplay      *display,
77                                     GdkWindow       *window,
78                                     gint            *x,
79                                     gint            *y,
80                                     GdkModifierType *mask);
81   GdkWindow* (*window_at_pointer)  (GdkDisplay      *display,
82                                     gint            *win_x,
83                                     gint            *win_y);
84 };
85
86 /**
87  * GdkDisplayDeviceHooks:
88  * @get_device_state: Obtains the current position and modifier state for
89  * @device. The position is given in coordinates relative to the window
90  * containing the pointer, which is returned in @window.
91  * @window_get_device_position: Obtains the window underneath the device
92  * position. Current device position and modifier state are returned in
93  * @x, @y and @mask. The position is given in coordinates relative to
94  * @window.
95  * @window_at_device_position: Obtains the window underneath the device
96  * position, returning the location of that window in @win_x, @win_y.
97  * Returns %NULL if the window under the mouse pointer is not known to
98  * GDK (for example, belongs to another application).
99  *
100  * A table of pointers to functions for getting quantities related to
101  * the current device position. Each #GdkDisplay has a table of this type,
102  * which can be set using gdk_display_set_device_hooks().
103  */
104 struct _GdkDisplayDeviceHooks
105 {
106   void (* get_device_state)                  (GdkDisplay       *display,
107                                               GdkDevice        *device,
108                                               GdkScreen       **screen,
109                                               gint             *x,
110                                               gint             *y,
111                                               GdkModifierType  *mask);
112   GdkWindow * (* window_get_device_position) (GdkDisplay      *display,
113                                               GdkDevice       *device,
114                                               GdkWindow       *window,
115                                               gint            *x,
116                                               gint            *y,
117                                               GdkModifierType *mask);
118   GdkWindow * (* window_at_device_position)  (GdkDisplay *display,
119                                               GdkDevice  *device,
120                                               gint       *win_x,
121                                               gint       *win_y);
122 };
123
124 GType       gdk_display_get_type (void) G_GNUC_CONST;
125 GdkDisplay *gdk_display_open                (const gchar *display_name);
126
127 G_CONST_RETURN gchar * gdk_display_get_name (GdkDisplay *display);
128
129 gint        gdk_display_get_n_screens      (GdkDisplay  *display);
130 GdkScreen * gdk_display_get_screen         (GdkDisplay  *display,
131                                             gint         screen_num);
132 GdkScreen * gdk_display_get_default_screen (GdkDisplay  *display);
133
134 #ifndef GDK_MULTIDEVICE_SAFE
135 void        gdk_display_pointer_ungrab     (GdkDisplay  *display,
136                                             guint32      time_);
137 void        gdk_display_keyboard_ungrab    (GdkDisplay  *display,
138                                             guint32      time_);
139 gboolean    gdk_display_pointer_is_grabbed (GdkDisplay  *display);
140 #endif /* GDK_MULTIDEVICE_SAFE */
141
142 gboolean    gdk_display_device_is_grabbed  (GdkDisplay  *display,
143                                             GdkDevice   *device);
144 void        gdk_display_beep               (GdkDisplay  *display);
145 void        gdk_display_sync               (GdkDisplay  *display);
146 void        gdk_display_flush              (GdkDisplay  *display);
147
148 void        gdk_display_close                  (GdkDisplay  *display);
149 gboolean    gdk_display_is_closed          (GdkDisplay  *display);
150
151 #ifndef GDK_DISABLE_DEPRECATED
152 GList *     gdk_display_list_devices       (GdkDisplay  *display);
153 #endif /* GDK_DISABLE_DEPRECATED */
154
155 GdkEvent* gdk_display_get_event  (GdkDisplay     *display);
156 GdkEvent* gdk_display_peek_event (GdkDisplay     *display);
157 void      gdk_display_put_event  (GdkDisplay     *display,
158                                   const GdkEvent *event);
159 gboolean  gdk_display_has_pending (GdkDisplay  *display);
160
161 void gdk_display_add_client_message_filter (GdkDisplay   *display,
162                                             GdkAtom       message_type,
163                                             GdkFilterFunc func,
164                                             gpointer      data);
165
166 void gdk_display_set_double_click_time     (GdkDisplay   *display,
167                                             guint         msec);
168 void gdk_display_set_double_click_distance (GdkDisplay   *display,
169                                             guint         distance);
170
171 GdkDisplay *gdk_display_get_default (void);
172
173 #ifndef GDK_MULTIDEVICE_SAFE
174
175 void             gdk_display_get_pointer           (GdkDisplay             *display,
176                                                     GdkScreen             **screen,
177                                                     gint                   *x,
178                                                     gint                   *y,
179                                                     GdkModifierType        *mask);
180 GdkWindow *      gdk_display_get_window_at_pointer (GdkDisplay             *display,
181                                                     gint                   *win_x,
182                                                     gint                   *win_y);
183 void             gdk_display_warp_pointer          (GdkDisplay             *display,
184                                                     GdkScreen              *screen,
185                                                     gint                   x,
186                                                     gint                   y);
187 #endif /* GDK_MULTIDEVICE_SAFE */
188
189 void             gdk_display_get_device_state              (GdkDisplay            *display,
190                                                             GdkDevice             *device,
191                                                             GdkScreen            **screen,
192                                                             gint                  *x,
193                                                             gint                  *y,
194                                                             GdkModifierType       *mask);
195 GdkWindow *      gdk_display_get_window_at_device_position (GdkDisplay            *display,
196                                                             GdkDevice             *device,
197                                                             gint                  *win_x,
198                                                             gint                  *win_y);
199
200 #ifndef GDK_MULTIDEVICE_SAFE
201 GdkDisplayPointerHooks *gdk_display_set_pointer_hooks (GdkDisplay                   *display,
202                                                        const GdkDisplayPointerHooks *new_hooks);
203 #endif /* GDK_MULTIDEVICE_SAFE */
204
205 GdkDisplayDeviceHooks *gdk_display_set_device_hooks (GdkDisplay                  *display,
206                                                      const GdkDisplayDeviceHooks *new_hooks);
207
208 GdkDisplay *gdk_display_open_default_libgtk_only (void);
209
210 gboolean gdk_display_supports_cursor_alpha     (GdkDisplay    *display);
211 gboolean gdk_display_supports_cursor_color     (GdkDisplay    *display);
212 guint    gdk_display_get_default_cursor_size   (GdkDisplay    *display);
213 void     gdk_display_get_maximal_cursor_size   (GdkDisplay    *display,
214                                                 guint         *width,
215                                                 guint         *height);
216
217 GdkWindow *gdk_display_get_default_group       (GdkDisplay *display); 
218
219 gboolean gdk_display_supports_selection_notification (GdkDisplay *display);
220 gboolean gdk_display_request_selection_notification  (GdkDisplay *display,
221                                                       GdkAtom     selection);
222
223 gboolean gdk_display_supports_clipboard_persistence (GdkDisplay    *display);
224 void     gdk_display_store_clipboard                (GdkDisplay    *display,
225                                                      GdkWindow     *clipboard_window,
226                                                      guint32        time_,
227                                                      const GdkAtom *targets,
228                                                      gint           n_targets);
229
230 gboolean gdk_display_supports_shapes           (GdkDisplay    *display);
231 gboolean gdk_display_supports_input_shapes     (GdkDisplay    *display);
232 gboolean gdk_display_supports_composite        (GdkDisplay    *display);
233 void     gdk_display_notify_startup_complete   (GdkDisplay    *display,
234                                                 const gchar   *startup_id);
235
236 GdkDeviceManager * gdk_display_get_device_manager (GdkDisplay *display);
237
238 GdkAppLaunchContext *gdk_display_get_app_launch_context (GdkDisplay *display);
239
240 G_END_DECLS
241
242 #endif  /* __GDK_DISPLAY_H__ */