[gtk/gtk-3-24: 1/2] Hide Objective-C from outside GdkQuartz.



commit ef72fe750adca51590b8c94a2e6c56cac32c2173
Author: John Ralls <jralls ceridwen us>
Date:   Sat Mar 16 16:45:44 2019 -0700

    Hide Objective-C from outside GdkQuartz.
    
    Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1737
    
    Don't export any functions taking or returning MacOS types in
    gdkquartz.h, gdkprivate-quartz.h, or any header that either includes.
    
    The GdkQuartz internal functions are moved to a new header
    gdkinternal-quartz.h, the functions used by quartz-specific
    Gtk files are moved to another new header gdkquartz-gtk-only.h, and
    the key and event enums to a new header gdkkeys-quartz.h.

 gdk/Makefile.am                       |   1 -
 gdk/gdkdisplaymanager.c               |   6 -
 gdk/quartz/GdkQuartzNSWindow.c        |   2 +
 gdk/quartz/GdkQuartzView.c            |   1 +
 gdk/quartz/Makefile.am                |   2 +
 gdk/quartz/gdkcursor-quartz.c         |   1 +
 gdk/quartz/gdkdevice-core-quartz.c    |   1 +
 gdk/quartz/gdkdisplay-quartz.h        |   1 +
 gdk/quartz/gdkdnd-quartz.c            |   3 +-
 gdk/quartz/gdkdnd-quartz.h            |   1 -
 gdk/quartz/gdkeventloop-quartz.c      |  13 ++
 gdk/quartz/gdkevents-quartz.c         |  17 ++-
 gdk/quartz/gdkglobals-quartz.c        |   1 +
 gdk/quartz/gdkinternal-quartz.h       | 265 ++++++++++++++++++++++++++++++++++
 gdk/quartz/gdkkeys-quartz.c           |   2 +
 gdk/quartz/gdkkeys-quartz.h           |  85 +++++++++++
 gdk/quartz/gdkmonitor-quartz.c        |   1 -
 gdk/quartz/gdkmonitor-quartz.h        |   1 +
 gdk/quartz/gdkprivate-quartz.h        | 214 +--------------------------
 gdk/quartz/gdkquartz-gtk-only.h       |  50 +++++++
 gdk/quartz/gdkquartz.h                |  23 ---
 gdk/quartz/gdkquartzdnd.h             |   4 +-
 gdk/quartz/gdkquartzkeys.h            |  73 ----------
 gdk/quartz/gdkquartzutils.h           |   4 -
 gdk/quartz/gdkquartzwindow.h          |   5 -
 gdk/quartz/gdkselection-quartz.c      |   1 +
 gdk/quartz/gdkutils-quartz.c          |   5 +-
 gdk/quartz/gdkwindow-quartz.c         |   2 +
 gdk/quartz/gdkwindow-quartz.h         |   2 +-
 gtk/deprecated/gtkstatusicon-quartz.c |   4 +-
 gtk/gtkclipboard-quartz.c             |   2 +-
 gtk/gtkdnd-quartz.c                   |   2 +
 gtk/gtkfilechoosernativequartz.c      |   3 +-
 gtk/gtkquartz.c                       |   2 +-
 modules/input/imquartz.c              |   5 +-
 35 files changed, 460 insertions(+), 345 deletions(-)
---
diff --git a/gdk/Makefile.am b/gdk/Makefile.am
index 6373e26a26..9e12bcabec 100644
--- a/gdk/Makefile.am
+++ b/gdk/Makefile.am
@@ -222,7 +222,6 @@ libgdk_3_la_LIBADD += x11/libgdk-x11.la
 endif # USE_X11
 
 if USE_QUARTZ
-libgdk_3_la_CFLAGS += -xobjective-c
 libgdk_3_la_LIBADD += quartz/libgdk-quartz.la
 endif # USE_QUARTZ
 
diff --git a/gdk/gdkdisplaymanager.c b/gdk/gdkdisplaymanager.c
index d87ed133ae..93d3b48702 100644
--- a/gdk/gdkdisplaymanager.c
+++ b/gdk/gdkdisplaymanager.c
@@ -38,12 +38,6 @@
 #endif
 
 #ifdef GDK_WINDOWING_QUARTZ
-/* When the gdk_quartz_display_open function is removed We can
- * immediately include gdkquartzdisplaymanager.h here instead of
- * gdkprivate-quartz.h so that we won’t have to enable -xobjective-c
- * for the “generic” GDK source code.
- * #include "quartz/gdkquartzdisplaymanager.h"
- */
 #include "quartz/gdkprivate-quartz.h"
 #endif
 
diff --git a/gdk/quartz/GdkQuartzNSWindow.c b/gdk/quartz/GdkQuartzNSWindow.c
index 6de26b001b..005e747d94 100644
--- a/gdk/quartz/GdkQuartzNSWindow.c
+++ b/gdk/quartz/GdkQuartzNSWindow.c
@@ -21,6 +21,8 @@
 #include "gdkquartzwindow.h"
 #include "gdkdnd-quartz.h"
 #include "gdkprivate-quartz.h"
+#include "gdkinternal-quartz.h"
+#include "gdkquartzdnd.h"
 
 @implementation GdkQuartzNSWindow
 
diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c
index 193fcc1d31..c017d30ca8 100644
--- a/gdk/quartz/GdkQuartzView.c
+++ b/gdk/quartz/GdkQuartzView.c
@@ -23,6 +23,7 @@
 #include "gdkquartzwindow.h"
 #include "gdkprivate-quartz.h"
 #include "gdkquartz.h"
+#include "gdkinternal-quartz.h"
 
 @implementation GdkQuartzView
 
diff --git a/gdk/quartz/Makefile.am b/gdk/quartz/Makefile.am
index a7b12ad562..3007b199c4 100644
--- a/gdk/quartz/Makefile.am
+++ b/gdk/quartz/Makefile.am
@@ -38,7 +38,9 @@ libgdk_quartz_la_SOURCES =            \
        gdkglcontext-quartz.c   \
        gdkglcontext-quartz.h   \
        gdkglobals-quartz.c     \
+       gdkinternal-quartz.h    \
        gdkkeys-quartz.c        \
+       gdkkeys-quartz.h        \
        gdkmonitor-quartz.c     \
        gdkmonitor-quartz.h     \
        gdkprivate-quartz.h     \
diff --git a/gdk/quartz/gdkcursor-quartz.c b/gdk/quartz/gdkcursor-quartz.c
index 3f587dbae1..26a9dffa88 100644
--- a/gdk/quartz/gdkcursor-quartz.c
+++ b/gdk/quartz/gdkcursor-quartz.c
@@ -23,6 +23,7 @@
 #include "gdkcursorprivate.h"
 #include "gdkquartzcursor.h"
 #include "gdkprivate-quartz.h"
+#include "gdkinternal-quartz.h"
 
 #include "xcursors.h"
 
diff --git a/gdk/quartz/gdkdevice-core-quartz.c b/gdk/quartz/gdkdevice-core-quartz.c
index 8ba62c0ae0..788cbe4b04 100644
--- a/gdk/quartz/gdkdevice-core-quartz.c
+++ b/gdk/quartz/gdkdevice-core-quartz.c
@@ -26,6 +26,7 @@
 #include "gdkquartzcursor.h"
 #include "gdkprivate-quartz.h"
 #include "gdkquartzdevice-core.h"
+#include "gdkinternal-quartz.h"
 
 struct _GdkQuartzDeviceCore
 {
diff --git a/gdk/quartz/gdkdisplay-quartz.h b/gdk/quartz/gdkdisplay-quartz.h
index c9533a91db..a053ab11cf 100644
--- a/gdk/quartz/gdkdisplay-quartz.h
+++ b/gdk/quartz/gdkdisplay-quartz.h
@@ -25,6 +25,7 @@
 #include "gdkwindow.h"
 #include "gdkinternals.h"
 #include "gdkmain.h"
+#include "gdkinternal-quartz.h"
 
 G_BEGIN_DECLS
 
diff --git a/gdk/quartz/gdkdnd-quartz.c b/gdk/quartz/gdkdnd-quartz.c
index aca4cb1dd8..a68ee3055e 100644
--- a/gdk/quartz/gdkdnd-quartz.c
+++ b/gdk/quartz/gdkdnd-quartz.c
@@ -20,7 +20,8 @@
 #include "gdkdnd.h"
 #include "gdkquartzdnd.h"
 #include "gdkprivate-quartz.h"
-
+#include "gdkinternal-quartz.h"
+#include "gdkquartz-gtk-only.h"
 
 G_DEFINE_TYPE (GdkQuartzDragContext, gdk_quartz_drag_context, GDK_TYPE_DRAG_CONTEXT)
 
diff --git a/gdk/quartz/gdkdnd-quartz.h b/gdk/quartz/gdkdnd-quartz.h
index 990904e760..e4aa3d5742 100644
--- a/gdk/quartz/gdkdnd-quartz.h
+++ b/gdk/quartz/gdkdnd-quartz.h
@@ -21,7 +21,6 @@
 #define __GDK_QUARTZ_DND__
 
 #include <gdkdndprivate.h>
-#include "gdkquartzdnd.h"
 
 #include <AppKit/AppKit.h>
 
diff --git a/gdk/quartz/gdkeventloop-quartz.c b/gdk/quartz/gdkeventloop-quartz.c
index 3f3b033242..8000576837 100644
--- a/gdk/quartz/gdkeventloop-quartz.c
+++ b/gdk/quartz/gdkeventloop-quartz.c
@@ -7,6 +7,7 @@
 #include <unistd.h>
 
 #include "gdkprivate-quartz.h"
+#include "gdkinternal-quartz.h"
 #include <gdk/gdkdisplayprivate.h>
 
 /* 
@@ -152,6 +153,18 @@ static const char *const state_names[]  = {
 };
 #endif
 
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 101200
+typedef enum
+  {
+   GDK_QUARTZ_EVENT_MASK_ANY = NSAnyEventMask,
+  } GdkQuartzEventMask;
+#else
+typedef enum
+  {
+   GDK_QUARTZ_EVENT_MASK_ANY = NSEventMaskAny,
+  } GdkQuartzEventMask;
+#endif
+
 static SelectThreadState select_thread_state = BEFORE_START;
 
 static pthread_t select_thread;
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index 04ac6e1f5a..d5576f47e6 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -34,8 +34,10 @@
 #include "gdkquartz.h"
 #include "gdkquartzdisplay.h"
 #include "gdkprivate-quartz.h"
+#include "gdkinternal-quartz.h"
 #include "gdkquartzdevicemanager-core.h"
 #include "gdkquartzkeys.h"
+#include "gdkkeys-quartz.h"
 
 #define GRIP_WIDTH 15
 #define GRIP_HEIGHT 15
@@ -46,6 +48,7 @@
    GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN && \
    GDK_WINDOW_TYPE (window) != GDK_WINDOW_OFFSCREEN)
 
+
 /* This is the window corresponding to the key window */
 static GdkWindow   *current_keyboard_window;
 
@@ -1312,14 +1315,16 @@ _gdk_quartz_events_get_current_keyboard_modifiers (void)
 GdkModifierType
 _gdk_quartz_events_get_current_mouse_modifiers (void)
 {
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
   if (gdk_quartz_osx_version () >= GDK_OSX_SNOW_LEOPARD)
-    {
-      return get_mouse_button_modifiers_from_ns_buttons ([NSClassFromString(@"NSEvent") 
pressedMouseButtons]);
-    }
+    return get_mouse_button_modifiers_from_ns_buttons ([NSClassFromString(@"NSEvent") pressedMouseButtons]);
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
   else
-    {
-      return get_mouse_button_modifiers_from_ns_buttons (GetCurrentButtonState ());
-    }
+#endif
+#endif
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+    return get_mouse_button_modifiers_from_ns_buttons (GetCurrentButtonState ());
+#endif
 }
 
 /* Detect window resizing */
diff --git a/gdk/quartz/gdkglobals-quartz.c b/gdk/quartz/gdkglobals-quartz.c
index 81cd4632e8..46a4c811aa 100644
--- a/gdk/quartz/gdkglobals-quartz.c
+++ b/gdk/quartz/gdkglobals-quartz.c
@@ -20,6 +20,7 @@
 #include "gdktypes.h"
 #include "gdkprivate.h"
 #include "gdkquartz.h"
+#include "gdkinternal-quartz.h"
 
 GdkDisplay *_gdk_display = NULL;
 GdkScreen *_gdk_screen = NULL;
diff --git a/gdk/quartz/gdkinternal-quartz.h b/gdk/quartz/gdkinternal-quartz.h
new file mode 100644
index 0000000000..2f47e0a71f
--- /dev/null
+++ b/gdk/quartz/gdkinternal-quartz.h
@@ -0,0 +1,265 @@
+/* gdkinternal-quartz.h
+ *
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GDK_INTERNAL_QUARTZ_H__
+#define __GDK_INTERNAL_QUARTZ_H__
+
+#include <AppKit/AppKit.h>
+
+/* This is mostly a pot of function prototypes to avoid having
+ * separate include file for each implementation file that exports
+ * functions to one other file in GdkQuartz.
+ */
+
+/* NSInteger only exists in Leopard and newer.  This check has to be
+ * done after inclusion of the system headers.  If NSInteger has not
+ * been defined, we know for sure that we are on 32-bit.
+ */
+#ifndef NSINTEGER_DEFINED
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#endif
+
+#ifndef CGFLOAT_DEFINED
+typedef float CGFloat;
+#endif
+
+#define GDK_QUARTZ_ALLOC_POOL NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
+#define GDK_QUARTZ_RELEASE_POOL [pool release]
+
+#include <gdk/gdkprivate.h>
+#include <gdk/quartz/gdkquartz.h>
+#include <gdk/quartz/gdkdevicemanager-core-quartz.h>
+#include <gdk/quartz/gdkdnd-quartz.h>
+#include <gdk/quartz/gdkscreen-quartz.h>
+#include <gdk/quartz/gdkwindow-quartz.h>
+
+#include <gdk/gdk.h>
+
+#include "config.h"
+
+extern GdkDisplay *_gdk_display;
+extern GdkScreen *_gdk_screen;
+extern GdkWindow *_gdk_root;
+
+extern GdkDragContext *_gdk_quartz_drag_source_context;
+
+#define GDK_WINDOW_IS_QUARTZ(win)        (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindow *)win)->impl))
+
+/* Initialization */
+void _gdk_quartz_window_init_windowing      (GdkDisplay *display,
+                                             GdkScreen  *screen);
+void _gdk_quartz_events_init                (void);
+void _gdk_quartz_event_loop_init            (void);
+
+/* Cursor */
+NSCursor   *_gdk_quartz_cursor_get_ns_cursor        (GdkCursor *cursor);
+
+/* Events */
+typedef enum {
+  GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
+} GdkQuartzEventSubType;
+
+void         _gdk_quartz_events_update_focus_window    (GdkWindow *new_window,
+                                                        gboolean   got_focus);
+void         _gdk_quartz_events_send_map_event         (GdkWindow *window);
+
+GdkModifierType _gdk_quartz_events_get_current_keyboard_modifiers (void);
+GdkModifierType _gdk_quartz_events_get_current_mouse_modifiers    (void);
+
+void         _gdk_quartz_events_break_all_grabs         (guint32    time);
+
+/* Event loop */
+gboolean   _gdk_quartz_event_loop_check_pending (void);
+NSEvent *  _gdk_quartz_event_loop_get_pending   (void);
+void       _gdk_quartz_event_loop_release_event (NSEvent *event);
+
+/* Keys */
+GdkEventType _gdk_quartz_keys_event_type  (NSEvent   *event);
+gboolean     _gdk_quartz_keys_is_modifier (guint      keycode);
+void         _gdk_quartz_synthesize_null_key_event (GdkWindow *window);
+
+/* Drag and Drop */
+void        _gdk_quartz_window_register_dnd      (GdkWindow   *window);
+GdkDragContext * _gdk_quartz_window_drag_begin   (GdkWindow   *window,
+                                                  GdkDevice   *device,
+                                                  GList       *targets,
+                                                  gint         x_root,
+                                                  gint         y_root);
+
+/* Display */
+
+GdkDisplay *    _gdk_quartz_display_open (const gchar *name);
+
+/* Display methods - events */
+void     _gdk_quartz_display_queue_events (GdkDisplay *display);
+gboolean _gdk_quartz_display_has_pending  (GdkDisplay *display);
+
+void       _gdk_quartz_display_event_data_copy (GdkDisplay     *display,
+                                                const GdkEvent *src,
+                                                GdkEvent       *dst);
+void       _gdk_quartz_display_event_data_free (GdkDisplay     *display,
+                                                GdkEvent       *event);
+
+/* Display methods - cursor */
+GdkCursor *_gdk_quartz_display_get_cursor_for_type     (GdkDisplay      *display,
+                                                        GdkCursorType    type);
+GdkCursor *_gdk_quartz_display_get_cursor_for_name     (GdkDisplay      *display,
+                                                        const gchar     *name);
+GdkCursor *_gdk_quartz_display_get_cursor_for_surface  (GdkDisplay      *display,
+                                                        cairo_surface_t *surface,
+                                                        gdouble          x,
+                                                        gdouble          y);
+gboolean   _gdk_quartz_display_supports_cursor_alpha   (GdkDisplay    *display);
+gboolean   _gdk_quartz_display_supports_cursor_color   (GdkDisplay    *display);
+void       _gdk_quartz_display_get_default_cursor_size (GdkDisplay *display,
+                                                        guint      *width,
+                                                        guint      *height);
+void       _gdk_quartz_display_get_maximal_cursor_size (GdkDisplay *display,
+                                                        guint      *width,
+                                                        guint      *height);
+
+/* Display methods - keymap */
+GdkKeymap * _gdk_quartz_display_get_keymap (GdkDisplay *display);
+
+/* Display methods - selection */
+gboolean    _gdk_quartz_display_set_selection_owner (GdkDisplay *display,
+                                                     GdkWindow  *owner,
+                                                     GdkAtom     selection,
+                                                     guint32     time,
+                                                     gboolean    send_event);
+GdkWindow * _gdk_quartz_display_get_selection_owner (GdkDisplay *display,
+                                                     GdkAtom     selection);
+gint        _gdk_quartz_display_get_selection_property (GdkDisplay     *display,
+                                                        GdkWindow      *requestor,
+                                                        guchar        **data,
+                                                        GdkAtom        *ret_type,
+                                                        gint           *ret_format);
+void        _gdk_quartz_display_convert_selection      (GdkDisplay     *display,
+                                                        GdkWindow      *requestor,
+                                                        GdkAtom         selection,
+                                                        GdkAtom         target,
+                                                        guint32         time);
+gint        _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay     *display,
+                                                            GdkAtom         encoding,
+                                                            gint            format,
+                                                            const guchar   *text,
+                                                            gint            length,
+                                                            gchar        ***list);
+gchar *     _gdk_quartz_display_utf8_to_string_target      (GdkDisplay     *displayt,
+                                                            const gchar    *str);
+
+/* Screen */
+GdkScreen  *_gdk_quartz_screen_new                      (void);
+void        _gdk_quartz_screen_update_window_sizes      (GdkScreen *screen);
+
+/* Screen methods - visual */
+GdkVisual *   _gdk_quartz_screen_get_rgba_visual            (GdkScreen      *screen);
+GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
+gint          _gdk_quartz_screen_visual_get_best_depth      (GdkScreen      *screen);
+GdkVisualType _gdk_quartz_screen_visual_get_best_type       (GdkScreen      *screen);
+GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
+GdkVisual*    _gdk_quartz_screen_visual_get_best            (GdkScreen      *screen);
+GdkVisual*    _gdk_quartz_screen_visual_get_best_with_depth (GdkScreen      *screen,
+                                                             gint            depth);
+GdkVisual*    _gdk_quartz_screen_visual_get_best_with_type  (GdkScreen      *screen,
+                                                             GdkVisualType   visual_type);
+GdkVisual*    _gdk_quartz_screen_visual_get_best_with_both  (GdkScreen      *screen,
+                                                             gint            depth,
+                                                             GdkVisualType   visual_type);
+void          _gdk_quartz_screen_query_depths               (GdkScreen      *screen,
+                                                             gint          **depths,
+                                                             gint           *count);
+void          _gdk_quartz_screen_query_visual_types         (GdkScreen      *screen,
+                                                             GdkVisualType **visual_types,
+                                                             gint           *count);
+void          _gdk_quartz_screen_init_visuals               (GdkScreen      *screen);
+GList *       _gdk_quartz_screen_list_visuals               (GdkScreen      *screen);
+
+/* Screen methods - events */
+void        _gdk_quartz_screen_broadcast_client_message (GdkScreen   *screen,
+                                                         GdkEvent    *event);
+gboolean    _gdk_quartz_screen_get_setting              (GdkScreen   *screen,
+                                                         const gchar *name,
+                                                         GValue      *value);
+
+gboolean    _gdk_quartz_window_is_ancestor          (GdkWindow *ancestor,
+                                                     GdkWindow *window);
+void       _gdk_quartz_window_gdk_xy_to_xy          (gint       gdk_x,
+                                                     gint       gdk_y,
+                                                     gint      *ns_x,
+                                                     gint      *ns_y);
+void       _gdk_quartz_window_xy_to_gdk_xy          (gint       ns_x,
+                                                     gint       ns_y,
+                                                     gint      *gdk_x,
+                                                     gint      *gdk_y);
+void       _gdk_quartz_window_nspoint_to_gdk_xy     (NSPoint    point,
+                                                     gint      *x,
+                                                     gint      *y);
+GdkWindow *_gdk_quartz_window_find_child            (GdkWindow *window,
+                                                     gint       x,
+                                                     gint       y,
+                                                     gboolean   get_toplevel);
+void       _gdk_quartz_window_attach_to_parent      (GdkWindow *window);
+void       _gdk_quartz_window_detach_from_parent    (GdkWindow *window);
+void       _gdk_quartz_window_did_become_main       (GdkWindow *window);
+void       _gdk_quartz_window_did_resign_main       (GdkWindow *window);
+void       _gdk_quartz_window_debug_highlight       (GdkWindow *window,
+                                                     gint       number);
+
+void       _gdk_quartz_window_update_position           (GdkWindow    *window);
+void       _gdk_quartz_window_update_fullscreen_state   (GdkWindow    *window);
+
+/* Window methods - testing */
+void     _gdk_quartz_window_sync_rendering    (GdkWindow       *window);
+gboolean _gdk_quartz_window_simulate_key      (GdkWindow       *window,
+                                               gint             x,
+                                               gint             y,
+                                               guint            keyval,
+                                               GdkModifierType  modifiers,
+                                               GdkEventType     key_pressrelease);
+gboolean _gdk_quartz_window_simulate_button   (GdkWindow       *window,
+                                               gint             x,
+                                               gint             y,
+                                               guint            button,
+                                               GdkModifierType  modifiers,
+                                               GdkEventType     button_pressrelease);
+
+/* Window methods - property */
+gboolean _gdk_quartz_window_get_property      (GdkWindow    *window,
+                                               GdkAtom       property,
+                                               GdkAtom       type,
+                                               gulong        offset,
+                                               gulong        length,
+                                               gint          pdelete,
+                                               GdkAtom      *actual_property_type,
+                                               gint         *actual_format_type,
+                                               gint         *actual_length,
+                                               guchar      **data);
+void     _gdk_quartz_window_change_property   (GdkWindow    *window,
+                                               GdkAtom       property,
+                                               GdkAtom       type,
+                                               gint          format,
+                                               GdkPropMode   mode,
+                                               const guchar *data,
+                                               gint          nelements);
+void     _gdk_quartz_window_delete_property   (GdkWindow    *window,
+                                               GdkAtom       property);
+
+
+#endif /* __GDK_INTERNAL_QUARTZ_H__ */
diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c
index f646372fe0..7512dae2f0 100644
--- a/gdk/quartz/gdkkeys-quartz.c
+++ b/gdk/quartz/gdkkeys-quartz.c
@@ -55,6 +55,8 @@
 #include "gdkquartzkeys.h"
 #include "gdkkeysprivate.h"
 #include "gdkkeysyms.h"
+#include "gdkkeys-quartz.h"
+#include "gdkinternal-quartz.h"
 
 #define NUM_KEYCODES 128
 #define KEYVALS_PER_KEYCODE 4
diff --git a/gdk/quartz/gdkkeys-quartz.h b/gdk/quartz/gdkkeys-quartz.h
new file mode 100644
index 0000000000..f61a00bd7e
--- /dev/null
+++ b/gdk/quartz/gdkkeys-quartz.h
@@ -0,0 +1,85 @@
+/* gdkkeys-quartz.h
+ *
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GDK_KEYS_QUARTZ_H__
+#define __GDK_KEYS_QUARTZ_H__
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 101200
+typedef enum
+  {
+    GDK_QUARTZ_FLAGS_CHANGED = NSFlagsChanged,
+    GDK_QUARTZ_KEY_UP = NSKeyUp,
+    GDK_QUARTZ_KEY_DOWN = NSKeyDown,
+    GDK_QUARTZ_MOUSE_ENTERED = NSMouseEntered,
+    GDK_QUARTZ_MOUSE_EXITED = NSMouseExited,
+    GDK_QUARTZ_SCROLL_WHEEL = NSScrollWheel,
+    GDK_QUARTZ_MOUSE_MOVED = NSMouseMoved,
+    GDK_QUARTZ_OTHER_MOUSE_DRAGGED = NSOtherMouseDragged,
+    GDK_QUARTZ_RIGHT_MOUSE_DRAGGED = NSRightMouseDragged,
+    GDK_QUARTZ_LEFT_MOUSE_DRAGGED = NSLeftMouseDragged,
+    GDK_QUARTZ_OTHER_MOUSE_UP = NSOtherMouseUp,
+    GDK_QUARTZ_RIGHT_MOUSE_UP = NSRightMouseUp,
+    GDK_QUARTZ_LEFT_MOUSE_UP = NSLeftMouseUp,
+    GDK_QUARTZ_OTHER_MOUSE_DOWN = NSOtherMouseDown,
+    GDK_QUARTZ_RIGHT_MOUSE_DOWN = NSRightMouseDown,
+    GDK_QUARTZ_LEFT_MOUSE_DOWN = NSLeftMouseDown,
+  } GdkQuartzEventType;
+
+typedef enum
+  {
+    GDK_QUARTZ_ALTERNATE_KEY_MASK = NSAlternateKeyMask,
+    GDK_QUARTZ_CONTROL_KEY_MASK = NSControlKeyMask,
+    GDK_QUARTZ_SHIFT_KEY_MASK = NSShiftKeyMask,
+    GDK_QUARTZ_ALPHA_SHIFT_KEY_MASK = NSAlphaShiftKeyMask,
+    GDK_QUARTZ_COMMAND_KEY_MASK = NSCommandKeyMask,
+    GDK_QUARTZ_ANY_EVENT_MASK = NSAnyEventMask,
+  } GdkQuartzEventModifierFlags;
+
+
+#else
+typedef enum
+  {
+    GDK_QUARTZ_FLAGS_CHANGED = NSEventTypeFlagsChanged,
+    GDK_QUARTZ_KEY_UP = NSEventTypeKeyUp,
+    GDK_QUARTZ_KEY_DOWN = NSEventTypeKeyDown,
+    GDK_QUARTZ_MOUSE_ENTERED = NSEventTypeMouseEntered,
+    GDK_QUARTZ_MOUSE_EXITED = NSEventTypeMouseExited,
+    GDK_QUARTZ_SCROLL_WHEEL = NSEventTypeScrollWheel,
+    GDK_QUARTZ_MOUSE_MOVED = NSEventTypeMouseMoved,
+    GDK_QUARTZ_OTHER_MOUSE_DRAGGED = NSEventTypeOtherMouseDragged,
+    GDK_QUARTZ_RIGHT_MOUSE_DRAGGED = NSEventTypeRightMouseDragged,
+    GDK_QUARTZ_LEFT_MOUSE_DRAGGED = NSEventTypeLeftMouseDragged,
+    GDK_QUARTZ_OTHER_MOUSE_UP = NSEventTypeOtherMouseUp,
+    GDK_QUARTZ_RIGHT_MOUSE_UP = NSEventTypeRightMouseUp,
+    GDK_QUARTZ_LEFT_MOUSE_UP = NSEventTypeLeftMouseUp,
+    GDK_QUARTZ_OTHER_MOUSE_DOWN = NSEventTypeOtherMouseDown,
+    GDK_QUARTZ_RIGHT_MOUSE_DOWN = NSEventTypeRightMouseDown,
+    GDK_QUARTZ_LEFT_MOUSE_DOWN = NSEventTypeLeftMouseDown,
+  } GdkQuartzEventType;
+
+typedef enum
+  {
+   GDK_QUARTZ_ALTERNATE_KEY_MASK = NSEventModifierFlagOption,
+   GDK_QUARTZ_CONTROL_KEY_MASK = NSEventModifierFlagControl,
+   GDK_QUARTZ_SHIFT_KEY_MASK = NSEventModifierFlagShift,
+   GDK_QUARTZ_ALPHA_SHIFT_KEY_MASK = NSEventModifierFlagCapsLock,
+   GDK_QUARTZ_COMMAND_KEY_MASK = NSEventModifierFlagCommand,
+  } GdkQuartzEventModifierFlags;
+
+
+#endif
+#endif /* __GDK_KEYS_QUARTZ_H__ */
diff --git a/gdk/quartz/gdkmonitor-quartz.c b/gdk/quartz/gdkmonitor-quartz.c
index 1182816a40..06f1be1dc0 100644
--- a/gdk/quartz/gdkmonitor-quartz.c
+++ b/gdk/quartz/gdkmonitor-quartz.c
@@ -23,7 +23,6 @@
 #include "gdkmonitor-quartz.h"
 #include "gdkdisplay-quartz.h"
 
-
 G_DEFINE_TYPE (GdkQuartzMonitor, gdk_quartz_monitor, GDK_TYPE_MONITOR)
 
 static void
diff --git a/gdk/quartz/gdkmonitor-quartz.h b/gdk/quartz/gdkmonitor-quartz.h
index 86811b2380..d37db8c990 100644
--- a/gdk/quartz/gdkmonitor-quartz.h
+++ b/gdk/quartz/gdkmonitor-quartz.h
@@ -25,6 +25,7 @@
 
 #include "gdkquartzmonitor.h"
 #include "gdkprivate-quartz.h"
+#include "gdkinternal-quartz.h"
 
 struct _GdkQuartzMonitor
 {
diff --git a/gdk/quartz/gdkprivate-quartz.h b/gdk/quartz/gdkprivate-quartz.h
index 8fca4300e4..7900c01b17 100644
--- a/gdk/quartz/gdkprivate-quartz.h
+++ b/gdk/quartz/gdkprivate-quartz.h
@@ -1,4 +1,4 @@
-/* gdkwindow-quartz.c
+/* gdkprivate-quartz.h
  *
  * Copyright (C) 2005-2007 Imendio AB
  *
@@ -19,15 +19,6 @@
 #ifndef __GDK_PRIVATE_QUARTZ_H__
 #define __GDK_PRIVATE_QUARTZ_H__
 
-#define GDK_QUARTZ_ALLOC_POOL NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
-#define GDK_QUARTZ_RELEASE_POOL [pool release]
-
-#include <gdk/gdkprivate.h>
-#include <gdk/quartz/gdkquartz.h>
-#include <gdk/quartz/gdkdevicemanager-core-quartz.h>
-#include <gdk/quartz/gdkdnd-quartz.h>
-#include <gdk/quartz/gdkscreen-quartz.h>
-#include <gdk/quartz/gdkwindow-quartz.h>
 
 #include <gdk/gdk.h>
 
@@ -35,215 +26,12 @@
 
 #include "config.h"
 
-extern GdkDisplay *_gdk_display;
-extern GdkScreen *_gdk_screen;
-extern GdkWindow *_gdk_root;
-
-extern GdkDragContext *_gdk_quartz_drag_source_context;
-
 #define GDK_WINDOW_IS_QUARTZ(win)        (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindow *)win)->impl))
 
-/* Initialization */
-void _gdk_quartz_window_init_windowing      (GdkDisplay *display,
-                                             GdkScreen  *screen);
-void _gdk_quartz_events_init                (void);
-void _gdk_quartz_event_loop_init            (void);
-
-/* Cursor */
-NSCursor   *_gdk_quartz_cursor_get_ns_cursor        (GdkCursor *cursor);
-
-/* Events */
-typedef enum {
-  GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
-} GdkQuartzEventSubType;
-
-void         _gdk_quartz_events_update_focus_window    (GdkWindow *new_window,
-                                                        gboolean   got_focus);
-void         _gdk_quartz_events_send_map_event         (GdkWindow *window);
-
-GdkModifierType _gdk_quartz_events_get_current_keyboard_modifiers (void);
-GdkModifierType _gdk_quartz_events_get_current_mouse_modifiers    (void);
-
-void         _gdk_quartz_events_break_all_grabs         (guint32    time);
-
-/* Event loop */
-gboolean   _gdk_quartz_event_loop_check_pending (void);
-NSEvent *  _gdk_quartz_event_loop_get_pending   (void);
-void       _gdk_quartz_event_loop_release_event (NSEvent *event);
-
-/* Keys */
-GdkEventType _gdk_quartz_keys_event_type  (NSEvent   *event);
-gboolean     _gdk_quartz_keys_is_modifier (guint      keycode);
-void         _gdk_quartz_synthesize_null_key_event (GdkWindow *window);
-
-/* Drag and Drop */
-void        _gdk_quartz_window_register_dnd      (GdkWindow   *window);
-GdkDragContext * _gdk_quartz_window_drag_begin   (GdkWindow   *window,
-                                                  GdkDevice   *device,
-                                                  GList       *targets,
-                                                  gint         x_root,
-                                                  gint         y_root);
 
 /* Display */
 
 GdkDisplay *    _gdk_quartz_display_open (const gchar *name);
 
-/* Display methods - events */
-void     _gdk_quartz_display_queue_events (GdkDisplay *display);
-gboolean _gdk_quartz_display_has_pending  (GdkDisplay *display);
-
-void       _gdk_quartz_display_event_data_copy (GdkDisplay     *display,
-                                                const GdkEvent *src,
-                                                GdkEvent       *dst);
-void       _gdk_quartz_display_event_data_free (GdkDisplay     *display,
-                                                GdkEvent       *event);
-
-/* Display methods - cursor */
-GdkCursor *_gdk_quartz_display_get_cursor_for_type     (GdkDisplay      *display,
-                                                        GdkCursorType    type);
-GdkCursor *_gdk_quartz_display_get_cursor_for_name     (GdkDisplay      *display,
-                                                        const gchar     *name);
-GdkCursor *_gdk_quartz_display_get_cursor_for_surface  (GdkDisplay      *display,
-                                                        cairo_surface_t *surface,
-                                                        gdouble          x,
-                                                        gdouble          y);
-gboolean   _gdk_quartz_display_supports_cursor_alpha   (GdkDisplay    *display);
-gboolean   _gdk_quartz_display_supports_cursor_color   (GdkDisplay    *display);
-void       _gdk_quartz_display_get_default_cursor_size (GdkDisplay *display,
-                                                        guint      *width,
-                                                        guint      *height);
-void       _gdk_quartz_display_get_maximal_cursor_size (GdkDisplay *display,
-                                                        guint      *width,
-                                                        guint      *height);
-
-/* Display methods - keymap */
-GdkKeymap * _gdk_quartz_display_get_keymap (GdkDisplay *display);
-
-/* Display methods - selection */
-gboolean    _gdk_quartz_display_set_selection_owner (GdkDisplay *display,
-                                                     GdkWindow  *owner,
-                                                     GdkAtom     selection,
-                                                     guint32     time,
-                                                     gboolean    send_event);
-GdkWindow * _gdk_quartz_display_get_selection_owner (GdkDisplay *display,
-                                                     GdkAtom     selection);
-gint        _gdk_quartz_display_get_selection_property (GdkDisplay     *display,
-                                                        GdkWindow      *requestor,
-                                                        guchar        **data,
-                                                        GdkAtom        *ret_type,
-                                                        gint           *ret_format);
-void        _gdk_quartz_display_convert_selection      (GdkDisplay     *display,
-                                                        GdkWindow      *requestor,
-                                                        GdkAtom         selection,
-                                                        GdkAtom         target,
-                                                        guint32         time);
-gint        _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay     *display,
-                                                            GdkAtom         encoding,
-                                                            gint            format,
-                                                            const guchar   *text,
-                                                            gint            length,
-                                                            gchar        ***list);
-gchar *     _gdk_quartz_display_utf8_to_string_target      (GdkDisplay     *displayt,
-                                                            const gchar    *str);
-
-/* Screen */
-GdkScreen  *_gdk_quartz_screen_new                      (void);
-void        _gdk_quartz_screen_update_window_sizes      (GdkScreen *screen);
-
-/* Screen methods - visual */
-GdkVisual *   _gdk_quartz_screen_get_rgba_visual            (GdkScreen      *screen);
-GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
-gint          _gdk_quartz_screen_visual_get_best_depth      (GdkScreen      *screen);
-GdkVisualType _gdk_quartz_screen_visual_get_best_type       (GdkScreen      *screen);
-GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
-GdkVisual*    _gdk_quartz_screen_visual_get_best            (GdkScreen      *screen);
-GdkVisual*    _gdk_quartz_screen_visual_get_best_with_depth (GdkScreen      *screen,
-                                                             gint            depth);
-GdkVisual*    _gdk_quartz_screen_visual_get_best_with_type  (GdkScreen      *screen,
-                                                             GdkVisualType   visual_type);
-GdkVisual*    _gdk_quartz_screen_visual_get_best_with_both  (GdkScreen      *screen,
-                                                             gint            depth,
-                                                             GdkVisualType   visual_type);
-void          _gdk_quartz_screen_query_depths               (GdkScreen      *screen,
-                                                             gint          **depths,
-                                                             gint           *count);
-void          _gdk_quartz_screen_query_visual_types         (GdkScreen      *screen,
-                                                             GdkVisualType **visual_types,
-                                                             gint           *count);
-void          _gdk_quartz_screen_init_visuals               (GdkScreen      *screen);
-GList *       _gdk_quartz_screen_list_visuals               (GdkScreen      *screen);
-
-/* Screen methods - events */
-void        _gdk_quartz_screen_broadcast_client_message (GdkScreen   *screen,
-                                                         GdkEvent    *event);
-gboolean    _gdk_quartz_screen_get_setting              (GdkScreen   *screen,
-                                                         const gchar *name,
-                                                         GValue      *value);
-
-
-/* Window */
-gboolean    _gdk_quartz_window_is_ancestor          (GdkWindow *ancestor,
-                                                     GdkWindow *window);
-void       _gdk_quartz_window_gdk_xy_to_xy          (gint       gdk_x,
-                                                     gint       gdk_y,
-                                                     gint      *ns_x,
-                                                     gint      *ns_y);
-void       _gdk_quartz_window_xy_to_gdk_xy          (gint       ns_x,
-                                                     gint       ns_y,
-                                                     gint      *gdk_x,
-                                                     gint      *gdk_y);
-void       _gdk_quartz_window_nspoint_to_gdk_xy     (NSPoint    point,
-                                                     gint      *x,
-                                                     gint      *y);
-GdkWindow *_gdk_quartz_window_find_child            (GdkWindow *window,
-                                                    gint       x,
-                                                    gint       y,
-                                                     gboolean   get_toplevel);
-void       _gdk_quartz_window_attach_to_parent      (GdkWindow *window);
-void       _gdk_quartz_window_detach_from_parent    (GdkWindow *window);
-void       _gdk_quartz_window_did_become_main       (GdkWindow *window);
-void       _gdk_quartz_window_did_resign_main       (GdkWindow *window);
-void       _gdk_quartz_window_debug_highlight       (GdkWindow *window,
-                                                     gint       number);
-
-void       _gdk_quartz_window_update_position           (GdkWindow    *window);
-void       _gdk_quartz_window_update_fullscreen_state   (GdkWindow    *window);
-
-/* Window methods - testing */
-void     _gdk_quartz_window_sync_rendering    (GdkWindow       *window);
-gboolean _gdk_quartz_window_simulate_key      (GdkWindow       *window,
-                                               gint             x,
-                                               gint             y,
-                                               guint            keyval,
-                                               GdkModifierType  modifiers,
-                                               GdkEventType     key_pressrelease);
-gboolean _gdk_quartz_window_simulate_button   (GdkWindow       *window,
-                                               gint             x,
-                                               gint             y,
-                                               guint            button,
-                                               GdkModifierType  modifiers,
-                                               GdkEventType     button_pressrelease);
-
-/* Window methods - property */
-gboolean _gdk_quartz_window_get_property      (GdkWindow    *window,
-                                               GdkAtom       property,
-                                               GdkAtom       type,
-                                               gulong        offset,
-                                               gulong        length,
-                                               gint          pdelete,
-                                               GdkAtom      *actual_property_type,
-                                               gint         *actual_format_type,
-                                               gint         *actual_length,
-                                               guchar      **data);
-void     _gdk_quartz_window_change_property   (GdkWindow    *window,
-                                               GdkAtom       property,
-                                               GdkAtom       type,
-                                               gint          format,
-                                               GdkPropMode   mode,
-                                               const guchar *data,
-                                               gint          nelements);
-void     _gdk_quartz_window_delete_property   (GdkWindow    *window,
-                                               GdkAtom       property);
-
 
 #endif /* __GDK_PRIVATE_QUARTZ_H__ */
diff --git a/gdk/quartz/gdkquartz-gtk-only.h b/gdk/quartz/gdkquartz-gtk-only.h
new file mode 100644
index 0000000000..193686c041
--- /dev/null
+++ b/gdk/quartz/gdkquartz-gtk-only.h
@@ -0,0 +1,50 @@
+/* gdkquartz-gtk-only.h
+ *
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GDK_QUARTZ_GTK_ONLY_H__
+#define __GDK_QUARTZ_GTK_ONLY_H__
+
+#if !(defined (GTK_COMPILATION) || defined (GDK_COMPILATION))
+#error "This API is for use only in Gtk internal code."
+#endif
+
+#include <Appkit/Appkit.h>
+#include <gdk/gdk.h>
+#include <gdk/quartz/gdkquartz.h>
+
+/* Drag and Drop/Clipboard */
+GDK_AVAILABLE_IN_ALL
+GdkAtom   gdk_quartz_pasteboard_type_to_atom_libgtk_only        (NSString       *type);
+GDK_AVAILABLE_IN_ALL
+NSString *gdk_quartz_target_to_pasteboard_type_libgtk_only      (const gchar    *target);
+GDK_AVAILABLE_IN_ALL
+NSString *gdk_quartz_atom_to_pasteboard_type_libgtk_only        (GdkAtom         atom);
+
+/* Utilities */
+GDK_AVAILABLE_IN_ALL
+NSImage  *gdk_quartz_pixbuf_to_ns_image_libgtk_only (GdkPixbuf *pixbuf);
+GDK_AVAILABLE_IN_ALL
+NSEvent  *gdk_quartz_event_get_nsevent              (GdkEvent  *event);
+
+/* Window */
+GDK_AVAILABLE_IN_ALL
+NSWindow *gdk_quartz_window_get_nswindow            (GdkWindow *window);
+GDK_AVAILABLE_IN_ALL
+NSView   *gdk_quartz_window_get_nsview              (GdkWindow *window);
+
+#endif
diff --git a/gdk/quartz/gdkquartz.h b/gdk/quartz/gdkquartz.h
index ed8e4cb8b1..b6bce2b140 100644
--- a/gdk/quartz/gdkquartz.h
+++ b/gdk/quartz/gdkquartz.h
@@ -20,26 +20,11 @@
 #ifndef __GDK_QUARTZ_H__
 #define __GDK_QUARTZ_H__
 
-#include <AppKit/AppKit.h>
-
 #include <gdk/gdk.h>
 #include <gdk/gdkprivate.h>
 
 G_BEGIN_DECLS
 
-/* NSInteger only exists in Leopard and newer.  This check has to be
- * done after inclusion of the system headers.  If NSInteger has not
- * been defined, we know for sure that we are on 32-bit.
- */
-#ifndef NSINTEGER_DEFINED
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-#endif
-
-#ifndef CGFLOAT_DEFINED
-typedef float CGFloat;
-#endif
-
 typedef enum
 {
   GDK_OSX_UNSUPPORTED = 0,
@@ -62,13 +47,6 @@ typedef enum
 GDK_AVAILABLE_IN_ALL
 GdkOSXVersion gdk_quartz_osx_version (void);
 
-GDK_AVAILABLE_IN_ALL
-GdkAtom   gdk_quartz_pasteboard_type_to_atom_libgtk_only        (NSString       *type);
-GDK_AVAILABLE_IN_ALL
-NSString *gdk_quartz_target_to_pasteboard_type_libgtk_only      (const gchar    *target);
-GDK_AVAILABLE_IN_ALL
-NSString *gdk_quartz_atom_to_pasteboard_type_libgtk_only        (GdkAtom         atom);
-
 G_END_DECLS
 
 #define __GDKQUARTZ_H_INSIDE__
@@ -78,7 +56,6 @@ G_END_DECLS
 #include <gdk/quartz/gdkquartzdevicemanager-core.h>
 #include <gdk/quartz/gdkquartzdisplay.h>
 #include <gdk/quartz/gdkquartzdisplaymanager.h>
-#include <gdk/quartz/gdkquartzdnd.h>
 #include <gdk/quartz/gdkquartzkeys.h>
 #include <gdk/quartz/gdkquartzmonitor.h>
 #include <gdk/quartz/gdkquartzscreen.h>
diff --git a/gdk/quartz/gdkquartzdnd.h b/gdk/quartz/gdkquartzdnd.h
index fb578e1b8f..bdcc93a12d 100644
--- a/gdk/quartz/gdkquartzdnd.h
+++ b/gdk/quartz/gdkquartzdnd.h
@@ -19,8 +19,8 @@
 #ifndef __GDK_QUARTZ_DND_H__
 #define __GDK_QUARTZ_DND_H__
 
-#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION)
-#error "Only <gdk/gdkquartz.h> can be included directly."
+#if !defined (GTK_COMPILATION) && !defined (GDK_COMPILATION)
+#error "gdkquartzdnd.h is for Gtk's internal use only"
 #endif
 
 #include <gdk/gdk.h>
diff --git a/gdk/quartz/gdkquartzkeys.h b/gdk/quartz/gdkquartzkeys.h
index c937288b45..f35612e36a 100644
--- a/gdk/quartz/gdkquartzkeys.h
+++ b/gdk/quartz/gdkquartzkeys.h
@@ -45,79 +45,6 @@ typedef struct _GdkQuartzKeymapClass GdkQuartzKeymapClass;
 GDK_AVAILABLE_IN_ALL
 GType gdk_quartz_keymap_get_type (void);
 
-#if MAC_OS_X_VERSION_MIN_REQUIRED < 101200
-typedef enum
-  {
-    GDK_QUARTZ_FLAGS_CHANGED = NSFlagsChanged,
-    GDK_QUARTZ_KEY_UP = NSKeyUp,
-    GDK_QUARTZ_KEY_DOWN = NSKeyDown,
-    GDK_QUARTZ_MOUSE_ENTERED = NSMouseEntered,
-    GDK_QUARTZ_MOUSE_EXITED = NSMouseExited,
-    GDK_QUARTZ_SCROLL_WHEEL = NSScrollWheel,
-    GDK_QUARTZ_MOUSE_MOVED = NSMouseMoved,
-    GDK_QUARTZ_OTHER_MOUSE_DRAGGED = NSOtherMouseDragged,
-    GDK_QUARTZ_RIGHT_MOUSE_DRAGGED = NSRightMouseDragged,
-    GDK_QUARTZ_LEFT_MOUSE_DRAGGED = NSLeftMouseDragged,
-    GDK_QUARTZ_OTHER_MOUSE_UP = NSOtherMouseUp,
-    GDK_QUARTZ_RIGHT_MOUSE_UP = NSRightMouseUp,
-    GDK_QUARTZ_LEFT_MOUSE_UP = NSLeftMouseUp,
-    GDK_QUARTZ_OTHER_MOUSE_DOWN = NSOtherMouseDown,
-    GDK_QUARTZ_RIGHT_MOUSE_DOWN = NSRightMouseDown,
-    GDK_QUARTZ_LEFT_MOUSE_DOWN = NSLeftMouseDown,
-  } GdkQuartzEventType;
-
-typedef enum
-  {
-    GDK_QUARTZ_ALTERNATE_KEY_MASK = NSAlternateKeyMask,
-    GDK_QUARTZ_CONTROL_KEY_MASK = NSControlKeyMask,
-    GDK_QUARTZ_SHIFT_KEY_MASK = NSShiftKeyMask,
-    GDK_QUARTZ_ALPHA_SHIFT_KEY_MASK = NSAlphaShiftKeyMask,
-    GDK_QUARTZ_COMMAND_KEY_MASK = NSCommandKeyMask,
-    GDK_QUARTZ_ANY_EVENT_MASK = NSAnyEventMask,
-  } GdkQuartzEventModifierFlags;
-
-typedef enum
-  {
-   GDK_QUARTZ_EVENT_MASK_ANY = NSAnyEventMask,
-  } GdkQuartzEventMask;
-
-#else
-typedef enum
-  {
-    GDK_QUARTZ_FLAGS_CHANGED = NSEventTypeFlagsChanged,
-    GDK_QUARTZ_KEY_UP = NSEventTypeKeyUp,
-    GDK_QUARTZ_KEY_DOWN = NSEventTypeKeyDown,
-    GDK_QUARTZ_MOUSE_ENTERED = NSEventTypeMouseEntered,
-    GDK_QUARTZ_MOUSE_EXITED = NSEventTypeMouseExited,
-    GDK_QUARTZ_SCROLL_WHEEL = NSEventTypeScrollWheel,
-    GDK_QUARTZ_MOUSE_MOVED = NSEventTypeMouseMoved,
-    GDK_QUARTZ_OTHER_MOUSE_DRAGGED = NSEventTypeOtherMouseDragged,
-    GDK_QUARTZ_RIGHT_MOUSE_DRAGGED = NSEventTypeRightMouseDragged,
-    GDK_QUARTZ_LEFT_MOUSE_DRAGGED = NSEventTypeLeftMouseDragged,
-    GDK_QUARTZ_OTHER_MOUSE_UP = NSEventTypeOtherMouseUp,
-    GDK_QUARTZ_RIGHT_MOUSE_UP = NSEventTypeRightMouseUp,
-    GDK_QUARTZ_LEFT_MOUSE_UP = NSEventTypeLeftMouseUp,
-    GDK_QUARTZ_OTHER_MOUSE_DOWN = NSEventTypeOtherMouseDown,
-    GDK_QUARTZ_RIGHT_MOUSE_DOWN = NSEventTypeRightMouseDown,
-    GDK_QUARTZ_LEFT_MOUSE_DOWN = NSEventTypeLeftMouseDown,
-  } GdkQuartzEventType;
-
-typedef enum
-  {
-   GDK_QUARTZ_ALTERNATE_KEY_MASK = NSEventModifierFlagOption,
-   GDK_QUARTZ_CONTROL_KEY_MASK = NSEventModifierFlagControl,
-   GDK_QUARTZ_SHIFT_KEY_MASK = NSEventModifierFlagShift,
-   GDK_QUARTZ_ALPHA_SHIFT_KEY_MASK = NSEventModifierFlagCapsLock,
-   GDK_QUARTZ_COMMAND_KEY_MASK = NSEventModifierFlagCommand,
-  } GdkQuartzEventModifierFlags;
-
-typedef enum
-  {
-   GDK_QUARTZ_EVENT_MASK_ANY = NSEventMaskAny,
-  } GdkQuartzEventMask;
-
-#endif
-
 G_END_DECLS
 
 #endif /* __GDK_QUARTZ_KEYS_H__ */
diff --git a/gdk/quartz/gdkquartzutils.h b/gdk/quartz/gdkquartzutils.h
index c816bf30ee..790f688fe3 100644
--- a/gdk/quartz/gdkquartzutils.h
+++ b/gdk/quartz/gdkquartzutils.h
@@ -28,10 +28,6 @@
 
 G_BEGIN_DECLS
 
-GDK_AVAILABLE_IN_ALL
-NSImage  *gdk_quartz_pixbuf_to_ns_image_libgtk_only             (GdkPixbuf      *pixbuf);
-GDK_AVAILABLE_IN_ALL
-NSEvent  *gdk_quartz_event_get_nsevent                          (GdkEvent       *event);
 GDK_AVAILABLE_IN_3_12
 gunichar  gdk_quartz_get_key_equivalent                         (guint           key);
 
diff --git a/gdk/quartz/gdkquartzwindow.h b/gdk/quartz/gdkquartzwindow.h
index a88eb16e9b..a90d84774d 100644
--- a/gdk/quartz/gdkquartzwindow.h
+++ b/gdk/quartz/gdkquartzwindow.h
@@ -45,11 +45,6 @@ typedef struct _GdkQuartzWindowClass GdkQuartzWindowClass;
 GDK_AVAILABLE_IN_ALL
 GType     gdk_quartz_window_get_type     (void);
 
-GDK_AVAILABLE_IN_ALL
-NSWindow *gdk_quartz_window_get_nswindow (GdkWindow *window);
-GDK_AVAILABLE_IN_ALL
-NSView   *gdk_quartz_window_get_nsview   (GdkWindow *window);
-
 G_END_DECLS
 
 #endif /* __GDK_QUARTZ_WINDOW_H__ */
diff --git a/gdk/quartz/gdkselection-quartz.c b/gdk/quartz/gdkselection-quartz.c
index 22ad16a3e5..20f65f960f 100644
--- a/gdk/quartz/gdkselection-quartz.c
+++ b/gdk/quartz/gdkselection-quartz.c
@@ -23,6 +23,7 @@
 #include "gdkselection.h"
 #include "gdkproperty.h"
 #include "gdkquartz.h"
+#include "gdkinternal-quartz.h"
 
 gboolean
 _gdk_quartz_display_set_selection_owner (GdkDisplay *display,
diff --git a/gdk/quartz/gdkutils-quartz.c b/gdk/quartz/gdkutils-quartz.c
index 30eff8a7e1..1edb94ad14 100644
--- a/gdk/quartz/gdkutils-quartz.c
+++ b/gdk/quartz/gdkutils-quartz.c
@@ -19,10 +19,11 @@
 
 #include "config.h"
 
-#include <AppKit/AppKit.h>
+#include <gdk/gdk.h>
+#include <gdkinternals.h>
 
+#include "gdkquartz-gtk-only.h"
 #include <gdkquartzutils.h>
-#include "gdkprivate-quartz.h"
 
 NSImage *
 gdk_quartz_pixbuf_to_ns_image_libgtk_only (GdkPixbuf *pixbuf)
diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c
index 12bac9798a..dc90dc77cc 100644
--- a/gdk/quartz/gdkwindow-quartz.c
+++ b/gdk/quartz/gdkwindow-quartz.c
@@ -24,11 +24,13 @@
 #include <gdk/gdkdisplayprivate.h>
 
 #include "gdkwindowimpl.h"
+#include "gdkwindow-quartz.h"
 #include "gdkprivate-quartz.h"
 #include "gdkglcontext-quartz.h"
 #include "gdkquartzglcontext.h"
 #include "gdkquartzscreen.h"
 #include "gdkquartzcursor.h"
+#include "gdkquartz-gtk-only.h"
 
 #include <Carbon/Carbon.h>
 #include <AvailabilityMacros.h>
diff --git a/gdk/quartz/gdkwindow-quartz.h b/gdk/quartz/gdkwindow-quartz.h
index 4c8347c9e5..3a4384d281 100644
--- a/gdk/quartz/gdkwindow-quartz.h
+++ b/gdk/quartz/gdkwindow-quartz.h
@@ -22,6 +22,7 @@
 #import <gdk/quartz/GdkQuartzView.h>
 #import <gdk/quartz/GdkQuartzNSWindow.h>
 #include "gdk/gdkwindowimpl.h"
+#include "gdkinternal-quartz.h"
 
 G_BEGIN_DECLS
 
@@ -108,7 +109,6 @@ struct _GdkRootWindowImplQuartzClass
 
 GType _gdk_root_window_impl_quartz_get_type (void);
 
-
 G_END_DECLS
 
 #endif /* __GDK_WINDOW_QUARTZ_H__ */
diff --git a/gtk/deprecated/gtkstatusicon-quartz.c b/gtk/deprecated/gtkstatusicon-quartz.c
index 7a2442b607..e7367d29a2 100644
--- a/gtk/deprecated/gtkstatusicon-quartz.c
+++ b/gtk/deprecated/gtkstatusicon-quartz.c
@@ -22,7 +22,9 @@
  */
 
 #import <Cocoa/Cocoa.h>
-#include <quartz/gdkquartz.h>
+#define __GTK_H_INSIDE__
+#include <quartz/gdkquartz-gtk-only.h>
+#undef __GTK_H_INSIDE__
 
 #define QUARTZ_POOL_ALLOC NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
 #define QUARTZ_POOL_RELEASE [pool release]
diff --git a/gtk/gtkclipboard-quartz.c b/gtk/gtkclipboard-quartz.c
index c01a9cd627..df599b253a 100644
--- a/gtk/gtkclipboard-quartz.c
+++ b/gtk/gtkclipboard-quartz.c
@@ -31,7 +31,7 @@
 #include "gtktextbuffer.h"
 #include "gtkselectionprivate.h"
 #include "gtkquartz.h"
-#include "../gdk/quartz/gdkquartz.h"
+#include "quartz/gdkquartz-gtk-only.h"
 
 enum {
   OWNER_CHANGE,
diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
index 072b7e4e12..a026584119 100644
--- a/gtk/gtkdnd-quartz.c
+++ b/gtk/gtkdnd-quartz.c
@@ -42,6 +42,8 @@
 #include "gtkintl.h"
 #include "gtkquartz.h"
 #include "gdk/quartz/gdkquartz.h"
+#include "gdk/quartz/gdkquartz-gtk-only.h"
+#include "gdk/quartz/gdkquartzdnd.h"
 #include "gtkselectionprivate.h"
 #include "gtksettings.h"
 #include "gtkiconhelperprivate.h"
diff --git a/gtk/gtkfilechoosernativequartz.c b/gtk/gtkfilechoosernativequartz.c
index 65f2579b90..b81b48d4af 100644
--- a/gtk/gtkfilechoosernativequartz.c
+++ b/gtk/gtkfilechoosernativequartz.c
@@ -40,8 +40,7 @@
 #include "gtklabel.h"
 #include "gtkfilechooserentry.h"
 #include "gtkfilefilterprivate.h"
-
-#include "quartz/gdkquartz.h"
+#include <quartz/gdkquartz-gtk-only.h>
 
 typedef struct {
   GtkFileChooserNative *self;
diff --git a/gtk/gtkquartz.c b/gtk/gtkquartz.c
index 183bef6c08..4790087b89 100644
--- a/gtk/gtkquartz.c
+++ b/gtk/gtkquartz.c
@@ -20,7 +20,7 @@
 
 #include "gtkquartz.h"
 #include "gtkselectionprivate.h"
-#include <gdk/quartz/gdkquartz.h>
+#include <gdk/quartz/gdkquartz-gtk-only.h>
 
 
 static gboolean
diff --git a/modules/input/imquartz.c b/modules/input/imquartz.c
index 17758493c3..718c8ffb06 100644
--- a/modules/input/imquartz.c
+++ b/modules/input/imquartz.c
@@ -25,7 +25,10 @@
 #include "gtk/gtkintl.h"
 #include "gtk/gtkimmodule.h"
 
-#include "gdk/quartz/gdkquartz.h"
+#define GTK_COMPILATION 1 // For gdkquartz-gtk-only.h
+
+#include "gdk/quartz/gdkinternal-quartz.h"
+#include "gdk/quartz/gdkquartz-gtk-only.h"
 #include "gdk/quartz/GdkQuartzView.h"
 
 #define GTK_IM_CONTEXT_TYPE_QUARTZ (type_quartz)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]