]> Pileus Git - ~andy/gtk/blob - gdk/quartz/gdkprivate-quartz.h
Change FSF Address
[~andy/gtk] / gdk / quartz / gdkprivate-quartz.h
1 /* gdkwindow-quartz.c
2  *
3  * Copyright (C) 2005-2007 Imendio AB
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef __GDK_PRIVATE_QUARTZ_H__
20 #define __GDK_PRIVATE_QUARTZ_H__
21
22 #define GDK_QUARTZ_ALLOC_POOL NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
23 #define GDK_QUARTZ_RELEASE_POOL [pool release]
24
25 #include <gdk/gdkprivate.h>
26 #include <gdk/quartz/gdkquartz.h>
27 #include <gdk/quartz/gdkdevicemanager-core-quartz.h>
28 #include <gdk/quartz/gdkdnd-quartz.h>
29 #include <gdk/quartz/gdkscreen-quartz.h>
30 #include <gdk/quartz/gdkwindow-quartz.h>
31
32 #include <gdk/gdk.h>
33
34 #include "gdkinternals.h"
35
36 #include "config.h"
37
38 extern GdkDisplay *_gdk_display;
39 extern GdkScreen *_gdk_screen;
40 extern GdkWindow *_gdk_root;
41
42 extern GdkDragContext *_gdk_quartz_drag_source_context;
43
44 #define GDK_WINDOW_IS_QUARTZ(win)        (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindow *)win)->impl))
45
46 /* Initialization */
47 void _gdk_quartz_window_init_windowing      (GdkDisplay *display,
48                                              GdkScreen  *screen);
49 void _gdk_quartz_events_init                (void);
50 void _gdk_quartz_event_loop_init            (void);
51
52 /* Cursor */
53 NSCursor   *_gdk_quartz_cursor_get_ns_cursor        (GdkCursor *cursor);
54
55 /* Events */
56 typedef enum {
57   GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
58 } GdkQuartzEventSubType;
59
60 void         _gdk_quartz_events_update_focus_window    (GdkWindow *new_window,
61                                                         gboolean   got_focus);
62 void         _gdk_quartz_events_send_map_event         (GdkWindow *window);
63
64 GdkModifierType _gdk_quartz_events_get_current_keyboard_modifiers (void);
65 GdkModifierType _gdk_quartz_events_get_current_mouse_modifiers    (void);
66
67 void         _gdk_quartz_events_send_enter_notify_event (GdkWindow *window);
68
69 /* Event loop */
70 gboolean   _gdk_quartz_event_loop_check_pending (void);
71 NSEvent *  _gdk_quartz_event_loop_get_pending   (void);
72 void       _gdk_quartz_event_loop_release_event (NSEvent *event);
73
74 /* Keys */
75 GdkEventType _gdk_quartz_keys_event_type  (NSEvent   *event);
76 gboolean     _gdk_quartz_keys_is_modifier (guint      keycode);
77
78 /* Drag and Drop */
79 void        _gdk_quartz_window_register_dnd      (GdkWindow   *window);
80 GdkDragContext * _gdk_quartz_window_drag_begin   (GdkWindow   *window,
81                                                   GdkDevice   *device,
82                                                   GList       *targets);
83
84 /* Display */
85
86 GdkDisplay *    _gdk_quartz_display_open (const gchar *name);
87
88 /* Display methods - events */
89 void     _gdk_quartz_display_queue_events (GdkDisplay *display);
90 gboolean _gdk_quartz_display_has_pending  (GdkDisplay *display);
91
92 void       _gdk_quartz_display_event_data_copy (GdkDisplay     *display,
93                                                 const GdkEvent *src,
94                                                 GdkEvent       *dst);
95 void       _gdk_quartz_display_event_data_free (GdkDisplay     *display,
96                                                 GdkEvent       *event);
97
98 /* Display methods - cursor */
99 GdkCursor *_gdk_quartz_display_get_cursor_for_type     (GdkDisplay    *display,
100                                                         GdkCursorType  type);
101 GdkCursor *_gdk_quartz_display_get_cursor_for_name     (GdkDisplay    *display,
102                                                         const gchar   *name);
103 GdkCursor *_gdk_quartz_display_get_cursor_for_pixbuf   (GdkDisplay    *display,
104                                                         GdkPixbuf     *pixbuf,
105                                                         gint           x,
106                                                         gint           y);
107 gboolean   _gdk_quartz_display_supports_cursor_alpha   (GdkDisplay    *display);
108 gboolean   _gdk_quartz_display_supports_cursor_color   (GdkDisplay    *display);
109 void       _gdk_quartz_display_get_default_cursor_size (GdkDisplay *display,
110                                                         guint      *width,
111                                                         guint      *height);
112 void       _gdk_quartz_display_get_maximal_cursor_size (GdkDisplay *display,
113                                                         guint      *width,
114                                                         guint      *height);
115
116 /* Display methods - window */
117 void       _gdk_quartz_display_before_process_all_updates (GdkDisplay *display);
118 void       _gdk_quartz_display_after_process_all_updates  (GdkDisplay *display);
119 void       _gdk_quartz_display_create_window_impl (GdkDisplay    *display,
120                                                    GdkWindow     *window,
121                                                    GdkWindow     *real_parent,
122                                                    GdkScreen     *screen,
123                                                    GdkEventMask   event_mask,
124                                                    GdkWindowAttr *attributes,
125                                                    gint           attributes_mask);
126
127 /* Display methods - keymap */
128 GdkKeymap * _gdk_quartz_display_get_keymap (GdkDisplay *display);
129
130 /* Display methods - selection */
131 gboolean    _gdk_quartz_display_set_selection_owner (GdkDisplay *display,
132                                                      GdkWindow  *owner,
133                                                      GdkAtom     selection,
134                                                      guint32     time,
135                                                      gboolean    send_event);
136 GdkWindow * _gdk_quartz_display_get_selection_owner (GdkDisplay *display,
137                                                      GdkAtom     selection);
138 gint        _gdk_quartz_display_get_selection_property (GdkDisplay     *display,
139                                                         GdkWindow      *requestor,
140                                                         guchar        **data,
141                                                         GdkAtom        *ret_type,
142                                                         gint           *ret_format);
143 void        _gdk_quartz_display_convert_selection      (GdkDisplay     *display,
144                                                         GdkWindow      *requestor,
145                                                         GdkAtom         selection,
146                                                         GdkAtom         target,
147                                                         guint32         time);
148 gint        _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay     *display,
149                                                             GdkAtom         encoding,
150                                                             gint            format,
151                                                             const guchar   *text,
152                                                             gint            length,
153                                                             gchar        ***list);
154 gchar *     _gdk_quartz_display_utf8_to_string_target      (GdkDisplay     *displayt,
155                                                             const gchar    *str);
156
157
158 /* Display manager */
159 void    _gdk_quartz_display_manager_add_display    (GdkDisplayManager *manager,
160                                                     GdkDisplay        *display);
161 void    _gdk_quartz_display_manager_remove_display (GdkDisplayManager *manager,
162                                                     GdkDisplay        *display);
163
164 /* Display manager methods - events */
165 GdkAtom _gdk_quartz_display_manager_atom_intern   (GdkDisplayManager *manager,
166                                                    const gchar       *atom_name,
167                                                    gboolean           copy_name);
168 gchar * _gdk_quartz_display_manager_get_atom_name (GdkDisplayManager *manager,
169                                                    GdkAtom            atom);
170
171 /* Screen */
172 GdkScreen  *_gdk_quartz_screen_new                      (void);
173 void        _gdk_quartz_screen_update_window_sizes      (GdkScreen *screen);
174
175 /* Screen methods - visual */
176 GdkVisual *   _gdk_quartz_screen_get_rgba_visual            (GdkScreen      *screen);
177 GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
178 gint          _gdk_quartz_screen_visual_get_best_depth      (GdkScreen      *screen);
179 GdkVisualType _gdk_quartz_screen_visual_get_best_type       (GdkScreen      *screen);
180 GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
181 GdkVisual*    _gdk_quartz_screen_visual_get_best            (GdkScreen      *screen);
182 GdkVisual*    _gdk_quartz_screen_visual_get_best_with_depth (GdkScreen      *screen,
183                                                              gint            depth);
184 GdkVisual*    _gdk_quartz_screen_visual_get_best_with_type  (GdkScreen      *screen,
185                                                              GdkVisualType   visual_type);
186 GdkVisual*    _gdk_quartz_screen_visual_get_best_with_both  (GdkScreen      *screen,
187                                                              gint            depth,
188                                                              GdkVisualType   visual_type);
189 void          _gdk_quartz_screen_query_depths               (GdkScreen      *screen,
190                                                              gint          **depths,
191                                                              gint           *count);
192 void          _gdk_quartz_screen_query_visual_types         (GdkScreen      *screen,
193                                                              GdkVisualType **visual_types,
194                                                              gint           *count);
195 void          _gdk_quartz_screen_init_visuals               (GdkScreen      *screen);
196 GList *       _gdk_quartz_screen_list_visuals               (GdkScreen      *screen);
197
198 /* Screen methods - events */
199 void        _gdk_quartz_screen_broadcast_client_message (GdkScreen   *screen,
200                                                          GdkEvent    *event);
201 gboolean    _gdk_quartz_screen_get_setting              (GdkScreen   *screen,
202                                                          const gchar *name,
203                                                          GValue      *value);
204
205
206 /* Window */
207 gboolean    _gdk_quartz_window_is_ancestor          (GdkWindow *ancestor,
208                                                      GdkWindow *window);
209 void       _gdk_quartz_window_gdk_xy_to_xy          (gint       gdk_x,
210                                                      gint       gdk_y,
211                                                      gint      *ns_x,
212                                                      gint      *ns_y);
213 void       _gdk_quartz_window_xy_to_gdk_xy          (gint       ns_x,
214                                                      gint       ns_y,
215                                                      gint      *gdk_x,
216                                                      gint      *gdk_y);
217 void       _gdk_quartz_window_nspoint_to_gdk_xy     (NSPoint    point,
218                                                      gint      *x,
219                                                      gint      *y);
220 GdkWindow *_gdk_quartz_window_find_child            (GdkWindow *window,
221                                                      gint       x,
222                                                      gint       y,
223                                                      gboolean   get_toplevel);
224 void       _gdk_quartz_window_attach_to_parent      (GdkWindow *window);
225 void       _gdk_quartz_window_detach_from_parent    (GdkWindow *window);
226 void       _gdk_quartz_window_did_become_main       (GdkWindow *window);
227 void       _gdk_quartz_window_did_resign_main       (GdkWindow *window);
228 void       _gdk_quartz_window_debug_highlight       (GdkWindow *window,
229                                                      gint       number);
230
231 void       _gdk_quartz_window_update_position           (GdkWindow    *window);
232
233
234 /* Window methods - testing */
235 void     _gdk_quartz_window_sync_rendering    (GdkWindow       *window);
236 gboolean _gdk_quartz_window_simulate_key      (GdkWindow       *window,
237                                                gint             x,
238                                                gint             y,
239                                                guint            keyval,
240                                                GdkModifierType  modifiers,
241                                                GdkEventType     key_pressrelease);
242 gboolean _gdk_quartz_window_simulate_button   (GdkWindow       *window,
243                                                gint             x,
244                                                gint             y,
245                                                guint            button,
246                                                GdkModifierType  modifiers,
247                                                GdkEventType     button_pressrelease);
248
249 /* Window methods - property */
250 gboolean _gdk_quartz_window_get_property      (GdkWindow    *window,
251                                                GdkAtom       property,
252                                                GdkAtom       type,
253                                                gulong        offset,
254                                                gulong        length,
255                                                gint          pdelete,
256                                                GdkAtom      *actual_property_type,
257                                                gint         *actual_format_type,
258                                                gint         *actual_length,
259                                                guchar      **data);
260 void     _gdk_quartz_window_change_property   (GdkWindow    *window,
261                                                GdkAtom       property,
262                                                GdkAtom       type,
263                                                gint          format,
264                                                GdkPropMode   mode,
265                                                const guchar *data,
266                                                gint          nelements);
267 void     _gdk_quartz_window_delete_property   (GdkWindow    *window,
268                                                GdkAtom       property);
269
270
271 #endif /* __GDK_PRIVATE_QUARTZ_H__ */