/* gdkwindow-quartz.c
*
- * Copyright (C) 2005-2006 Imendio AB
+ * 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
#define GDK_QUARTZ_RELEASE_POOL [pool release]
#include <gdk/gdkprivate.h>
-#include <gdk/quartz/gdkpixmap-quartz.h>
#include <gdk/quartz/gdkwindow-quartz.h>
+#include <gdk/quartz/gdkquartz.h>
#include <gdk/gdk.h>
#include "gdkinternals.h"
-#include <config.h>
-
-#define GDK_TYPE_GC_QUARTZ (_gdk_gc_quartz_get_type ())
-#define GDK_GC_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_GC_QUARTZ, GdkGCQuartz))
-#define GDK_GC_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_GC_QUARTZ, GdkGCQuartzClass))
-#define GDK_IS_GC_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_GC_QUARTZ))
-#define GDK_IS_GC_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_GC_QUARTZ))
-#define GDK_GC_QUARTZ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_GC_QUARTZ, GdkGCQuartzClass))
+#include "config.h"
#define GDK_DRAG_CONTEXT_PRIVATE(context) ((GdkDragContextPrivate *) GDK_DRAG_CONTEXT (context)->windowing_data)
typedef struct _GdkCursorPrivate GdkCursorPrivate;
-typedef struct _GdkGCQuartz GdkGCQuartz;
-typedef struct _GdkGCQuartzClass GdkGCQuartzClass;
typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
-struct _GdkGCQuartz
-{
- GdkGC parent_instance;
-
- GdkFont *font;
- GdkFunction function;
- GdkSubwindowMode subwindow_mode;
- gboolean graphics_exposures;
-
- gboolean have_clip_region;
- gboolean have_clip_mask;
- CGImageRef clip_mask;
-
- gint line_width;
- GdkLineStyle line_style;
- GdkCapStyle cap_style;
- GdkJoinStyle join_style;
-
- gfloat *dash_lengths;
- gint dash_count;
- gfloat dash_phase;
-
- CGPatternRef ts_pattern;
-
- guint is_window : 1;
-};
-
-struct _GdkGCQuartzClass
-{
- GdkGCClass parent_class;
-};
-
struct _GdkVisualClass
{
GObjectClass parent_class;
struct _GdkDragContextPrivate
{
id <NSDraggingInfo> dragging_info;
+ GdkDevice *device;
};
extern GdkDisplay *_gdk_display;
extern GdkDragContext *_gdk_quartz_drag_source_context;
+#define GDK_WINDOW_IS_QUARTZ(win) (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindow *)win)->impl))
+
/* Initialization */
-void _gdk_windowing_window_init (void);
-void _gdk_events_init (void);
-void _gdk_visual_init (void);
-void _gdk_input_init (void);
-void _gdk_quartz_event_loop_init (void);
+void _gdk_windowing_update_window_sizes (GdkScreen *screen);
+void _gdk_windowing_window_init (void);
+void _gdk_events_init (void);
+void _gdk_quartz_visual_init (GdkScreen *screen);
+void _gdk_input_init (void);
+void _gdk_quartz_event_loop_init (void);
/* GC */
typedef enum {
GDK_QUARTZ_CONTEXT_TEXT = 1 << 2
} GdkQuartzContextValuesMask;
-GType _gdk_gc_quartz_get_type (void);
-GdkGC *_gdk_quartz_gc_new (GdkDrawable *drawable,
- GdkGCValues *values,
- GdkGCValuesMask values_mask);
-void _gdk_quartz_gc_update_cg_context (GdkGC *gc,
- GdkDrawable *drawable,
- CGContextRef context,
- GdkQuartzContextValuesMask mask);
-
-/* Colormap */
-void _gdk_quartz_colormap_get_rgba_from_pixel (GdkColormap *colormap,
- guint32 pixel,
- gfloat *red,
- gfloat *green,
- gfloat *blue,
- gfloat *alpha);
-
/* Window */
-GdkWindow *_gdk_quartz_window_find_child_by_point (GdkWindow *toplevel,
- gint x,
- gint y,
- gint *x_ret,
- gint *y_ret);
-gint _gdk_quartz_window_get_inverted_screen_y (gint y);
+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);
+ 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_set_needs_display_in_region (GdkWindow *window,
+ cairo_region_t *region);
+
+void _gdk_quartz_window_update_position (GdkWindow *window);
/* Events */
-void _gdk_quartz_events_update_focus_window (GdkWindow *new_window,
- gboolean got_focus);
-GdkWindow * _gdk_quartz_events_get_mouse_window (void);
-void _gdk_quartz_events_update_mouse_window (GdkWindow *window);
-void _gdk_quartz_events_update_cursor (GdkWindow *window);
-void _gdk_quartz_events_send_map_events (GdkWindow *window);
+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);
GdkEventMask _gdk_quartz_events_get_current_event_mask (void);
-extern GdkWindow *_gdk_quartz_keyboard_grab_window;
-extern GdkWindow *_gdk_quartz_pointer_grab_window;
+void _gdk_quartz_events_send_enter_notify_event (GdkWindow *window);
/* Event loop */
-NSEvent * _gdk_quartz_event_loop_get_current (void);
-void _gdk_quartz_event_loop_release_current (void);
-
-/* FIXME: image */
-GdkImage *_gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
- GdkImage *image,
- gint src_x,
- gint src_y,
- gint dest_x,
- gint dest_y,
- gint width,
- gint height);
+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);
-/* Drawable */
-void _gdk_quartz_drawable_finish (GdkDrawable *drawable);
+/* Geometry */
+void _gdk_quartz_window_scroll (GdkWindow *window,
+ gint dx,
+ gint dy);
+void _gdk_quartz_window_translate (GdkWindow *window,
+ cairo_region_t *area,
+ gint dx,
+ gint dy);
+gboolean _gdk_quartz_window_queue_antiexpose (GdkWindow *window,
+ cairo_region_t *area);
+
+void _gdk_quartz_window_set_startup_id (GdkWindow *window,
+ const gchar *startup_id);
+void _gdk_quartz_window_register_dnd (GdkWindow *window);
+GdkDragContext * _gdk_quartz_window_drag_begin (GdkWindow *window,
+ GdkDevice *device,
+ GList *targets);
+
+
+void _gdk_quartz_display_sync (GdkDisplay *display);
+void _gdk_quartz_display_flush (GdkDisplay *display);
+GList * _gdk_quartz_display_list_devices (GdkDisplay *dpy);
+
+GdkNativeWinodw _gdk_quartz_display_get_drag_get_protocol (GdkDisplay *display,
+ GdkNativeWindow *xid,
+ GdkDragProtocol *protocol,
+ guint version);
+
+
+gboolean _gdk_quartz_display_send_client_message (GdkDisplay *display,
+ GdkEvent *event,
+ GdkNativeWindow winid);
+void _gdk_quartz_display_add_client_message_filter (GdkDisplay *display,
+ GdkAtom message_type,
+ GdkFilterFunc func,
+ gpointer data);
+
+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);
+GList * _gdk_quartz_screen_list_visuals (GdkScreen *screen);
+
+
+void _gdk_quartz_screen_broadcast_client_message (GdkScreen *screen,
+ GdkEvent *event);
+gboolean _gdk_quartz_screen_get_setting (GdkScreen *screen,
+ const gchar *name,
+ GValue *value);
+
+void _gdk_quartz_device_check_extension_events (GdkDevice *device);
+
#endif /* __GDK_PRIVATE_QUARTZ_H__ */