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