[gtk+/gtk-2-22] Seal gdk



commit cfb988ab383e47254f32cd0dd00e8b1bafb4d535
Author: Javier Jardón <jjardon gnome org>
Date:   Thu May 27 16:11:25 2010 +0200

    Seal gdk
    
    Add G_SEAL annotation for struct members, and add accessors for
    the (useful) fields. Patch based on work by Garrett Regier,
    see bug #592580.

 docs/reference/gdk/tmpl/general.sgml |    9 ++-
 gdk/gdk.symbols                      |   45 +++++++-
 gdk/gdkcolor.h                       |    8 +-
 gdk/gdkcursor.h                      |    4 +-
 gdk/gdkdisplay.h                     |   34 +++---
 gdk/gdkdnd.c                         |   73 ++++++++++++
 gdk/gdkdnd.h                         |   28 +++--
 gdk/gdkgc.h                          |   10 +-
 gdk/gdkimage.c                       |  162 ++++++++++++++++++++++++++
 gdk/gdkimage.h                       |   35 ++++--
 gdk/gdkinput.h                       |   28 ++++--
 gdk/gdkkeys.h                        |    2 +-
 gdk/gdkpixmap.h                      |    4 +-
 gdk/gdkscreen.h                      |   12 +-
 gdk/gdkvisual.c                      |  189 ++++++++++++++++++++++++++++++
 gdk/gdkvisual.h                      |   52 ++++++---
 gdk/gdkwindow.c                      |  210 +++++++++++++++++++++++++++++++++-
 gdk/gdkwindow.h                      |   79 +++++++------
 gdk/quartz/gdkinput.c                |   61 ++++++++++
 gdk/win32/gdkinput.c                 |   62 ++++++++++
 gdk/x11/gdkinput.c                   |  125 ++++++++++++++++++++
 21 files changed, 1100 insertions(+), 132 deletions(-)
---
diff --git a/docs/reference/gdk/tmpl/general.sgml b/docs/reference/gdk/tmpl/general.sgml
index 3278731..365c9e6 100644
--- a/docs/reference/gdk/tmpl/general.sgml
+++ b/docs/reference/gdk/tmpl/general.sgml
@@ -405,7 +405,14 @@ Removes the X error trap installed with gdk_error_trap_push().
 
 <!-- ##### MACRO GDK_WINDOWING_X11 ##### -->
 <para>
-This macro is defined if GDK is configured to use the X backend.
+This macro is defined if GDK is configured to use the X11 backend.
+</para>
+
+
+
+<!-- ##### MACRO GDK_WINDOWING_WIN32 ##### -->
+<para>
+This macro is defined if GDK is configured to use the win32 backend.
 </para>
 
 
diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols
index bb6e2b2..e6dd466 100644
--- a/gdk/gdk.symbols
+++ b/gdk/gdk.symbols
@@ -377,7 +377,13 @@ gdk_cursor_get_image
 #if IN_FILE(__GDK_INPUT_C__)
 gdk_device_free_history
 gdk_device_get_axis
+gdk_device_get_axis_use
+gdk_device_get_has_cursor
 gdk_device_get_history
+gdk_device_get_key
+gdk_device_get_mode
+gdk_device_get_name
+gdk_device_get_source
 gdk_device_get_type G_GNUC_CONST
 gdk_device_set_axis_use
 gdk_device_set_key
@@ -529,6 +535,10 @@ gdk_drop_reply
 
 #if IN_HEADER(__GDK_DND_H__)
 #if IN_FILE(__GDK_DND_C__)
+gdk_drag_context_get_action
+gdk_drag_context_get_actions
+gdk_drag_context_get_suggested_action
+gdk_drag_context_list_targets
 gdk_drag_find_window
 gdk_drag_get_protocol
 #endif
@@ -659,14 +669,20 @@ gdk_window_resize
 gdk_window_move_resize
 gdk_window_scroll
 gdk_window_move_region
-gdk_window_set_background
-gdk_window_set_back_pixmap
-gdk_window_set_cursor
+gdk_window_get_accept_focus
+gdk_window_get_back_pixmap
+gdk_window_get_background
+gdk_window_get_composited
 gdk_window_get_cursor
+gdk_window_get_deskrelative_origin
+gdk_window_get_focus_on_map
 gdk_window_get_geometry
+gdk_window_get_modal_hint
 gdk_window_get_origin
 gdk_window_get_root_coords
-gdk_window_get_deskrelative_origin
+gdk_window_set_background
+gdk_window_set_back_pixmap
+gdk_window_set_cursor
 gdk_window_shape_combine_mask
 gdk_window_shape_combine_region
 gdk_window_set_child_shapes
@@ -708,10 +724,12 @@ gdk_window_get_toplevels
 gdk_window_get_update_area
 gdk_window_get_user_data
 gdk_window_get_window_type
-gdk_window_is_destroyed
 gdk_window_invalidate_maybe_recurse
 gdk_window_invalidate_rect
 gdk_window_invalidate_region
+gdk_window_is_destroyed
+gdk_window_is_input_only
+gdk_window_is_shaped
 gdk_window_is_viewable
 gdk_window_is_visible
 gdk_window_object_get_type G_GNUC_CONST
@@ -806,6 +824,15 @@ gdk_window_configure_finished
 
 #if IN_HEADER(__GDK_IMAGE_H__)
 #if IN_FILE(__GDK_IMAGE_C__)
+gdk_image_get_bits_per_pixel
+gdk_image_get_bytes_per_pixel
+gdk_image_get_bytes_per_line
+gdk_image_get_byte_order
+gdk_image_get_depth
+gdk_image_get_height
+gdk_image_get_image_type
+gdk_image_get_visual
+gdk_image_get_width
 #ifndef GDK_DISABLE_DEPRECATED
 gdk_image_ref
 gdk_image_unref
@@ -883,7 +910,15 @@ gdk_keyval_name G_GNUC_CONST
 #if IN_HEADER(__GDK_VISUAL_H__)
 #if IN_FILE(__GDK_VISUAL_C__)
 gdk_list_visuals
+gdk_visual_get_bits_per_rgb
+gdk_visual_get_blue_pixel_details
+gdk_visual_get_byte_order
+gdk_visual_get_colormap_size
+gdk_visual_get_depth
+gdk_visual_get_green_pixel_details
+gdk_visual_get_red_pixel_details
 gdk_visual_get_system
+gdk_visual_get_visual_type
 #endif
 #endif
 
diff --git a/gdk/gdkcolor.h b/gdk/gdkcolor.h
index 54fc301..9913bb9 100644
--- a/gdk/gdkcolor.h
+++ b/gdk/gdkcolor.h
@@ -71,13 +71,13 @@ struct _GdkColormap
   GObject parent_instance;
 
   /*< public >*/
-  gint      size;
-  GdkColor *colors;
+  gint      GSEAL (size);
+  GdkColor *GSEAL (colors);
 
   /*< private >*/
-  GdkVisual *visual;
+  GdkVisual *GSEAL (visual);
   
-  gpointer windowing_data;
+  gpointer GSEAL (windowing_data);
 };
 
 struct _GdkColormapClass
diff --git a/gdk/gdkcursor.h b/gdk/gdkcursor.h
index f204003..70413c8 100644
--- a/gdk/gdkcursor.h
+++ b/gdk/gdkcursor.h
@@ -126,9 +126,9 @@ typedef enum
 
 struct _GdkCursor
 {
-  GdkCursorType type;
+  GdkCursorType GSEAL (type);
   /*< private >*/
-  guint ref_count;
+  guint GSEAL (ref_count);
 };
 
 /* Cursors
diff --git a/gdk/gdkdisplay.h b/gdk/gdkdisplay.h
index 2838d44..2863656 100644
--- a/gdk/gdkdisplay.h
+++ b/gdk/gdkdisplay.h
@@ -75,34 +75,34 @@ struct _GdkDisplay
   GObject parent_instance;
 
   /*< private >*/
-  GList *queued_events;
-  GList *queued_tail;
+  GList *GSEAL (queued_events);
+  GList *GSEAL (queued_tail);
 
   /* Information for determining if the latest button click
    * is part of a double-click or triple-click
    */
-  guint32 button_click_time[2];	/* The last 2 button click times. */
-  GdkWindow *button_window[2];  /* The last 2 windows to receive button presses. */
-  gint button_number[2];        /* The last 2 buttons to be pressed. */
+  guint32 GSEAL (button_click_time[2]);	/* The last 2 button click times. */
+  GdkWindow *GSEAL (button_window[2]);  /* The last 2 windows to receive button presses. */
+  gint GSEAL (button_number[2]);        /* The last 2 buttons to be pressed. */
 
-  guint double_click_time;	/* Maximum time between clicks in msecs */
-  GdkDevice *core_pointer;	/* Core pointer device */
+  guint GSEAL (double_click_time);	/* Maximum time between clicks in msecs */
+  GdkDevice *GSEAL (core_pointer);	/* Core pointer device */
 
-  const GdkDisplayPointerHooks *pointer_hooks; /* Current hooks for querying pointer */
+  const GdkDisplayPointerHooks *GSEAL (pointer_hooks); /* Current hooks for querying pointer */
   
-  guint closed : 1;		/* Whether this display has been closed */
-  guint ignore_core_events : 1; /* Don't send core motion and button event */
+  guint GSEAL (closed) : 1;		/* Whether this display has been closed */
+  guint GSEAL (ignore_core_events) : 1; /* Don't send core motion and button event */
 
-  guint double_click_distance;	/* Maximum distance between clicks in pixels */
-  gint button_x[2];             /* The last 2 button click positions. */
-  gint button_y[2];
+  guint GSEAL (double_click_distance);	/* Maximum distance between clicks in pixels */
+  gint GSEAL (button_x[2]);             /* The last 2 button click positions. */
+  gint GSEAL (button_y[2]);
 
-  GList *pointer_grabs;
-  GdkKeyboardGrabInfo keyboard_grab;
-  GdkPointerWindowInfo pointer_info;
+  GList *GSEAL (pointer_grabs);
+  GdkKeyboardGrabInfo GSEAL (keyboard_grab);
+  GdkPointerWindowInfo GSEAL (pointer_info);
 
   /* Last reported event time from server */
-  guint32 last_event_time;
+  guint32 GSEAL (last_event_time);
 };
 
 struct _GdkDisplayClass
diff --git a/gdk/gdkdnd.c b/gdk/gdkdnd.c
index 2d114fa..1b4ca7a 100644
--- a/gdk/gdkdnd.c
+++ b/gdk/gdkdnd.c
@@ -77,5 +77,78 @@ gdk_drag_get_protocol (GdkNativeWindow  xid,
   return gdk_drag_get_protocol_for_display (gdk_display_get_default (), xid, protocol);
 }
 
+/**
+ * gdk_drag_context_list_targets:
+ * @context: a #GdkDragContext
+ *
+ * Retrieves the list of targets of the context.
+ *
+ * Return value: a #GList of targets
+ *
+ * Since: 2.22
+ **/
+GList *
+gdk_drag_context_list_targets (GdkDragContext *context)
+{
+  g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL);
+
+  return context->targets;
+}
+
+/**
+ * gdk_drag_context_get_actions:
+ * @context: a #GdkDragContext
+ *
+ * Determines the bitmask of actions proposed by the source if
+ * gdk_drag_context_suggested_action() returns GDK_ACTION_ASK.
+ *
+ * Return value: the #GdkDragAction flags
+ *
+ * Since: 2.22
+ **/
+GdkDragAction
+gdk_drag_context_get_actions (GdkDragContext *context)
+{
+  g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), GDK_ACTION_DEFAULT);
+
+  return context->actions;
+}
+
+/**
+ * gdk_drag_context_get_suggested_action:
+ * @context: a #GdkDragContext
+ *
+ * Determines the suggested drag action of the context.
+ *
+ * Return value: a #GdkDragAction value
+ *
+ * Since: 2.22
+ **/
+GdkDragAction
+gdk_drag_context_get_suggested_action (GdkDragContext *context)
+{
+  g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), 0);
+
+  return context->suggested_action;
+}
+
+/**
+ * gdk_drag_context_get_action:
+ * @context: a #GdkDragContext
+ *
+ * Determines the action chosen by the drag destination.
+ *
+ * Return value: a #GdkDragAction value
+ *
+ * Since: 2.22
+ **/
+GdkDragAction
+gdk_drag_context_get_action (GdkDragContext *context)
+{
+  g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), 0);
+
+  return context->action;
+}
+
 #define __GDK_DND_C__
 #include "gdkaliasdef.c"
diff --git a/gdk/gdkdnd.h b/gdk/gdkdnd.h
index b9f8335..d27b973 100644
--- a/gdk/gdkdnd.h
+++ b/gdk/gdkdnd.h
@@ -77,29 +77,28 @@ struct _GdkDragContext {
 
   /*< public >*/
   
-  GdkDragProtocol protocol;
-  
-  gboolean is_source;
+  GdkDragProtocol GSEAL (protocol);
+
+  gboolean GSEAL (is_source);
   
-  GdkWindow *source_window;
-  GdkWindow *dest_window;
+  GdkWindow *GSEAL (source_window);
+  GdkWindow *GSEAL (dest_window);
 
-  GList *targets;
-  GdkDragAction actions;
-  GdkDragAction suggested_action;
-  GdkDragAction action; 
+  GList *GSEAL (targets);
+  GdkDragAction GSEAL (actions);
+  GdkDragAction GSEAL (suggested_action);
+  GdkDragAction GSEAL (action);
 
-  guint32 start_time;
+  guint32 GSEAL (start_time);
 
   /*< private >*/
   
-  gpointer windowing_data;
+  gpointer GSEAL (windowing_data);
 };
 
 struct _GdkDragContextClass {
   GObjectClass parent_class;
 
-  
 };
 
 /* Drag and Drop */
@@ -107,6 +106,11 @@ struct _GdkDragContextClass {
 GType            gdk_drag_context_get_type   (void) G_GNUC_CONST;
 GdkDragContext * gdk_drag_context_new        (void);
 
+GList           *gdk_drag_context_list_targets         (GdkDragContext *context);
+GdkDragAction    gdk_drag_context_get_actions          (GdkDragContext *context);
+GdkDragAction    gdk_drag_context_get_suggested_action (GdkDragContext *context);
+GdkDragAction    gdk_drag_context_get_action           (GdkDragContext *context);
+
 #ifndef GDK_DISABLE_DEPRECATED
 void             gdk_drag_context_ref        (GdkDragContext *context);
 void             gdk_drag_context_unref      (GdkDragContext *context);
diff --git a/gdk/gdkgc.h b/gdk/gdkgc.h
index c64d2af..6657786 100644
--- a/gdk/gdkgc.h
+++ b/gdk/gdkgc.h
@@ -190,12 +190,12 @@ struct _GdkGC
 {
   GObject parent_instance;
 
-  gint clip_x_origin;
-  gint clip_y_origin;
-  gint ts_x_origin;
-  gint ts_y_origin;
+  gint GSEAL (clip_x_origin);
+  gint GSEAL (clip_y_origin);
+  gint GSEAL (ts_x_origin);
+  gint GSEAL (ts_y_origin);
 
-  GdkColormap *colormap;
+  GdkColormap *GSEAL (colormap);
 };
 
 struct _GdkGCClass 
diff --git a/gdk/gdkimage.c b/gdk/gdkimage.c
index 9c9b1a3..c5e7c0f 100644
--- a/gdk/gdkimage.c
+++ b/gdk/gdkimage.c
@@ -146,6 +146,168 @@ gdk_image_get_colormap (GdkImage *image)
   return image->colormap;
 }
 
+/**
+ * gdk_image_get_image_type:
+ * @image: a #GdkImage
+ *
+ * Determines the type of a given image.
+ *
+ * Return value: the #GdkImageType of the image
+ *
+ * Since: 2.22
+ **/
+GdkImageType
+gdk_image_get_image_type (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->type;
+}
+
+/**
+ * gdk_image_get_visual:
+ * @image: a #GdkImage
+ *
+ * Determines the visual that was used to create the image.
+ *
+ * Return value: a #GdkVisual
+ *
+ * Since: 2.22
+ **/
+GdkVisual *
+gdk_image_get_visual (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), NULL);
+
+  return image->visual;
+}
+
+/**
+ * gdk_image_get_byte_order:
+ * @image: a #GdkImage
+ *
+ * Determines the byte order of the image.
+ *
+ * Return value: a #GdkVisual
+ *
+ * Since: 2.22
+ **/
+GdkByteOrder
+gdk_image_get_byte_order (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->byte_order;
+}
+
+/**
+ * gdk_image_get_width:
+ * @image: a #GdkImage
+ *
+ * Determines the width of the image.
+ *
+ * Return value: the width
+ *
+ * Since: 2.22
+ **/
+gint
+gdk_image_get_width (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->width;
+}
+
+/**
+ * gdk_image_get_height:
+ * @image: a #GdkImage
+ *
+ * Determines the height of the image.
+ *
+ * Return value: the height
+ *
+ * Since: 2.22
+ **/
+gint
+gdk_image_get_height (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->height;
+}
+
+/**
+ * gdk_image_get_depth:
+ * @image: a #GdkImage
+ *
+ * Determines the depth of the image.
+ *
+ * Return value: the depth
+ *
+ * Since: 2.22
+ **/
+guint16
+gdk_image_get_depth (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->depth;
+}
+
+/**
+ * gdk_image_get_bytes_per_pixel:
+ * @image: a #GdkImage
+ *
+ * Determines the number of bytes per pixel of the image.
+ *
+ * Return value: the bytes per pixel
+ *
+ * Since: 2.22
+ **/
+guint16
+gdk_image_get_bytes_per_pixel (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->bpp;
+}
+
+/**
+ * gdk_image_get_bytes_per_line:
+ * @image: a #GdkImage
+ *
+ * Determines the number of bytes per line of the image.
+ *
+ * Return value: the bytes per line
+ *
+ * Since: 2.22
+ **/
+guint16
+gdk_image_get_bytes_per_line (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->bpl;
+}
+
+/**
+ * gdk_image_get_bits_per_pixel:
+ * @image: a #GdkImage
+ *
+ * Determines the number of bits per pixel of the image.
+ *
+ * Return value: the bits per pixel
+ *
+ * Since: 2.22
+ **/
+guint16
+gdk_image_get_bits_per_pixel (GdkImage *image)
+{
+  g_return_val_if_fail (GDK_IS_IMAGE (image), 0);
+
+  return image->bits_per_pixel;
+}
+
 /* We have N_REGION GDK_SCRATCH_IMAGE_WIDTH x GDK_SCRATCH_IMAGE_HEIGHT regions divided
  * up between n_images different images. possible_n_images gives
  * various divisors of N_REGIONS. The reason for allowing this
diff --git a/gdk/gdkimage.h b/gdk/gdkimage.h
index 92ac4ff..d34148e 100644
--- a/gdk/gdkimage.h
+++ b/gdk/gdkimage.h
@@ -68,21 +68,21 @@ struct _GdkImage
 
   /*< public >*/
   
-  GdkImageType	type; /* read only. */
-  GdkVisual    *visual;	    /* read only. visual used to create the image */
-  GdkByteOrder	byte_order; /* read only. */
-  gint		width; /* read only. */
-  gint		height; /* read only. */
-  guint16	depth; /* read only. */
-  guint16	bpp;	        /* read only. bytes per pixel */
-  guint16	bpl;	        /* read only. bytes per line */
-  guint16       bits_per_pixel; /* read only. bits per pixel */
-  gpointer	mem;
-
-  GdkColormap  *colormap; /* read only. */
+  GdkImageType	GSEAL (type); /* read only. */
+  GdkVisual    *GSEAL (visual);	    /* read only. visual used to create the image */
+  GdkByteOrder	GSEAL (byte_order); /* read only. */
+  gint		GSEAL (width);  /* read only. */
+  gint		GSEAL (height); /* read only. */
+  guint16	GSEAL (depth);  /* read only. */
+  guint16	GSEAL (bpp);    /* read only. bytes per pixel */
+  guint16	GSEAL (bpl);    /* read only. bytes per line */
+  guint16       GSEAL (bits_per_pixel); /* read only. bits per pixel */
+  gpointer	GSEAL (mem);
+
+  GdkColormap  *GSEAL (colormap); /* read only. */
 
   /*< private >*/
-  gpointer windowing_data; /* read only. */
+  gpointer GSEAL (windowing_data); /* read only. */
 };
 
 struct _GdkImageClass
@@ -120,6 +120,15 @@ void       gdk_image_set_colormap (GdkImage    *image,
                                    GdkColormap *colormap);
 GdkColormap* gdk_image_get_colormap (GdkImage    *image);
 
+GdkImageType  gdk_image_get_image_type     (GdkImage *image);
+GdkVisual    *gdk_image_get_visual         (GdkImage *image);
+GdkByteOrder  gdk_image_get_byte_order     (GdkImage *image);
+gint          gdk_image_get_width          (GdkImage *image);
+gint          gdk_image_get_height         (GdkImage *image);
+guint16       gdk_image_get_depth          (GdkImage *image);
+guint16       gdk_image_get_bytes_per_pixel(GdkImage *image);
+guint16       gdk_image_get_bytes_per_line (GdkImage *image);
+guint16       gdk_image_get_bits_per_pixel (GdkImage *image);
 
 #ifdef GDK_ENABLE_BROKEN
 GdkImage* gdk_image_new_bitmap (GdkVisual     *visual,
diff --git a/gdk/gdkinput.h b/gdk/gdkinput.h
index 9e1bbc7..b2ab1e4 100644
--- a/gdk/gdkinput.h
+++ b/gdk/gdkinput.h
@@ -100,16 +100,16 @@ struct _GdkDevice
   GObject parent_instance;
   /* All fields are read-only */
 	  
-  gchar *name;
-  GdkInputSource source;
-  GdkInputMode mode;
-  gboolean has_cursor;	     /* TRUE if the X pointer follows device motion */
+  gchar *GSEAL (name);
+  GdkInputSource GSEAL (source);
+  GdkInputMode GSEAL (mode);
+  gboolean GSEAL (has_cursor);   /* TRUE if the X pointer follows device motion */
 	  
-  gint num_axes;
-  GdkDeviceAxis *axes;
+  gint GSEAL (num_axes);
+  GdkDeviceAxis *GSEAL (axes);
 	  
-  gint num_keys;
-  GdkDeviceKey *keys;
+  gint GSEAL (num_keys);
+  GdkDeviceKey *GSEAL (keys);
 };
 
 /* We don't allocate each coordinate this big, but we use it to
@@ -130,6 +130,18 @@ GType          gdk_device_get_type      (void) G_GNUC_CONST;
 GList *        gdk_devices_list              (void);
 #endif /* GDK_MULTIHEAD_SAFE */
 
+G_CONST_RETURN gchar *gdk_device_get_name       (GdkDevice *device);
+GdkInputSource        gdk_device_get_source     (GdkDevice *device);
+GdkInputMode          gdk_device_get_mode       (GdkDevice *device);
+gboolean              gdk_device_get_has_cursor (GdkDevice *device);
+
+void                  gdk_device_get_key        (GdkDevice       *device,
+                                                 guint            index,
+                                                 guint           *keyval,
+                                                 GdkModifierType *modifiers);
+GdkAxisUse            gdk_device_get_axis_use   (GdkDevice       *device,
+                                                 guint            index);
+
 /* Functions to configure a device */
 void           gdk_device_set_source    (GdkDevice      *device,
 					 GdkInputSource  source);
diff --git a/gdk/gdkkeys.h b/gdk/gdkkeys.h
index a6750ce..2c98d36 100644
--- a/gdk/gdkkeys.h
+++ b/gdk/gdkkeys.h
@@ -66,7 +66,7 @@ typedef struct _GdkKeymapClass GdkKeymapClass;
 struct _GdkKeymap
 {
   GObject     parent_instance;
-  GdkDisplay *display;
+  GdkDisplay *GSEAL (display);
 };
 
 struct _GdkKeymapClass
diff --git a/gdk/gdkpixmap.h b/gdk/gdkpixmap.h
index 470a9e5..62aee11 100644
--- a/gdk/gdkpixmap.h
+++ b/gdk/gdkpixmap.h
@@ -51,9 +51,9 @@ struct _GdkPixmapObject
 {
   GdkDrawable parent_instance;
   
-  GdkDrawable *impl;  /* window-system-specific delegate object */
+  GdkDrawable *GSEAL (impl);  /* window-system-specific delegate object */
 
-  gint depth;
+  gint GSEAL (depth);
 };
 
 struct _GdkPixmapObjectClass
diff --git a/gdk/gdkscreen.h b/gdk/gdkscreen.h
index 4e3bb1c..02e83b0 100644
--- a/gdk/gdkscreen.h
+++ b/gdk/gdkscreen.h
@@ -47,14 +47,14 @@ struct _GdkScreen
 {
   GObject parent_instance;
 
-  guint closed : 1;
+  guint GSEAL (closed) : 1;
 
-  GdkGC *normal_gcs[32];
-  GdkGC *exposure_gcs[32];
-  GdkGC *subwindow_gcs[32];
+  GdkGC *GSEAL (normal_gcs[32]);
+  GdkGC *GSEAL (exposure_gcs[32]);
+  GdkGC *GSEAL (subwindow_gcs[32]);
 
-  cairo_font_options_t *font_options;
-  double resolution;		/* pixels/points scale factor for fonts */
+  cairo_font_options_t *GSEAL (font_options);
+  double GSEAL (resolution);	/* pixels/points scale factor for fonts */
 };
 
 struct _GdkScreenClass
diff --git a/gdk/gdkvisual.c b/gdk/gdkvisual.c
index 9e75563..ce1bdd7 100644
--- a/gdk/gdkvisual.c
+++ b/gdk/gdkvisual.c
@@ -60,5 +60,194 @@ gdk_visual_get_system (void)
   return gdk_screen_get_system_visual (gdk_screen_get_default());
 }
 
+/**
+ * gdk_visual_get_visual_type:
+ * @visual: A #GdkVisual.
+ *
+ * Returns the type of visual this is (PseudoColor, TrueColor, etc).
+ *
+ * Return value: A #GdkVisualType stating the type of @visual.
+ *
+ * Since: 2.22
+ */
+GdkVisualType
+gdk_visual_get_visual_type (GdkVisual *visual)
+{
+  g_return_val_if_fail (GDK_IS_VISUAL (visual), 0);
+
+  return visual->type;
+}
+
+/**
+ * gdk_visual_get_depth:
+ * @visual: A #GdkVisual.
+ *
+ * Returns the bit depth of this visual.
+ *
+ * Return value: The bit depth of this visual.
+ *
+ * Since: 2.22
+ */
+gint
+gdk_visual_get_depth (GdkVisual *visual)
+{
+  g_return_val_if_fail (GDK_IS_VISUAL (visual), 0);
+
+  return visual->depth;
+}
+
+/**
+ * gdk_visual_get_byte_order:
+ * @visual: A #GdkVisual.
+ *
+ * Returns the byte order of this visual.
+ *
+ * Return value: A #GdkByteOrder stating the byte order of @visual.
+ *
+ * Since: 2.22
+ */
+GdkByteOrder
+gdk_visual_get_byte_order (GdkVisual *visual)
+{
+  g_return_val_if_fail (GDK_IS_VISUAL (visual), 0);
+
+  return visual->byte_order;
+}
+
+/**
+ * gdk_visual_get_colormap_size:
+ * @visual: A #GdkVisual.
+ *
+ * Returns the size of a colormap for this visual.
+ *
+ * Return value: The size of a colormap that is suitable for @visual.
+ *
+ * Since: 2.22
+ */
+gint
+gdk_visual_get_colormap_size (GdkVisual *visual)
+{
+  g_return_val_if_fail (GDK_IS_VISUAL (visual), 0);
+
+  return visual->colormap_size;
+}
+
+/**
+ * gdk_visual_get_bits_per_rgb:
+ * @visual: a #GdkVisual
+ *
+ * Returns the number of significant bits per red, green and blue value.
+ *
+ * Return value: The number of significant bits per color value for @visual.
+ *
+ * Since: 2.22
+ */
+gint
+gdk_visual_get_bits_per_rgb (GdkVisual *visual)
+{
+  g_return_val_if_fail (GDK_IS_VISUAL (visual), 0);
+
+  return visual->bits_per_rgb;
+}
+
+/**
+ * gdk_visual_get_red_pixel_details:
+ * @visual: A #GdkVisual.
+ * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL.
+ * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL.
+ * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL.
+ *
+ * Obtains values that are needed to calculate red pixel values in TrueColor
+ * and DirectColor.  The "mask" is the significant bits within the pixel.
+ * The "shift" is the number of bits left we must shift a primary for it
+ * to be in position (according to the "mask").  Finally, "precision" refers
+ * to how much precision the pixel value contains for a particular primary.
+ *
+ * Since: 2.22
+ */
+void
+gdk_visual_get_red_pixel_details (GdkVisual *visual,
+                                  guint32   *mask,
+                                  gint      *shift,
+                                  gint      *precision)
+{
+  g_return_if_fail (GDK_IS_VISUAL (visual));
+
+  if (mask)
+    *mask = visual->red_mask;
+
+  if (shift)
+    *shift = visual->red_shift;
+
+  if (precision)
+    *precision = visual->red_prec;
+}
+
+/**
+ * gdk_visual_get_green_pixel_details:
+ * @visual: a #GdkVisual
+ * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL.
+ * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL.
+ * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL.
+ *
+ * Obtains values that are needed to calculate green pixel values in TrueColor
+ * and DirectColor.  The "mask" is the significant bits within the pixel.
+ * The "shift" is the number of bits left we must shift a primary for it
+ * to be in position (according to the "mask").  Finally, "precision" refers
+ * to how much precision the pixel value contains for a particular primary.
+ *
+ * Since: 2.22
+ */
+void
+gdk_visual_get_green_pixel_details (GdkVisual *visual,
+                                    guint32   *mask,
+                                    gint      *shift,
+                                    gint      *precision)
+{
+  g_return_if_fail (GDK_IS_VISUAL (visual));
+
+  if (mask)
+    *mask = visual->green_mask;
+
+  if (shift)
+    *shift = visual->green_shift;
+
+  if (precision)
+    *precision = visual->green_prec;
+}
+
+/**
+ * gdk_visual_get_blue_pixel_details:
+ * @visual: a #GdkVisual
+ * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL.
+ * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL.
+ * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL.
+ *
+ * Obtains values that are needed to calculate blue pixel values in TrueColor
+ * and DirectColor.  The "mask" is the significant bits within the pixel.
+ * The "shift" is the number of bits left we must shift a primary for it
+ * to be in position (according to the "mask").  Finally, "precision" refers
+ * to how much precision the pixel value contains for a particular primary.
+ *
+ * Since: 2.22
+ */
+void
+gdk_visual_get_blue_pixel_details (GdkVisual *visual,
+                                   guint32   *mask,
+                                   gint      *shift,
+                                   gint      *precision)
+{
+  g_return_if_fail (GDK_IS_VISUAL (visual));
+
+  if (mask)
+    *mask = visual->blue_mask;
+
+  if (shift)
+    *shift = visual->blue_shift;
+
+  if (precision)
+    *precision = visual->blue_prec;
+}
+
 #define __GDK_VISUAL_C__
 #include "gdkaliasdef.c"
diff --git a/gdk/gdkvisual.h b/gdk/gdkvisual.h
index d9479a5..5ab9e3e 100644
--- a/gdk/gdkvisual.h
+++ b/gdk/gdkvisual.h
@@ -78,23 +78,23 @@ struct _GdkVisual
 {
   GObject parent_instance;
   
-  GdkVisualType type;
-  gint depth;
-  GdkByteOrder byte_order;
-  gint colormap_size;
-  gint bits_per_rgb;
-
-  guint32 red_mask;
-  gint red_shift;
-  gint red_prec;
-
-  guint32 green_mask;
-  gint green_shift;
-  gint green_prec;
-
-  guint32 blue_mask;
-  gint blue_shift;
-  gint blue_prec;
+  GdkVisualType GSEAL (type);
+  gint GSEAL (depth);
+  GdkByteOrder GSEAL (byte_order);
+  gint GSEAL (colormap_size);
+  gint GSEAL (bits_per_rgb);
+
+  guint32 GSEAL (red_mask);
+  gint GSEAL (red_shift);
+  gint GSEAL (red_prec);
+
+  guint32 GSEAL (green_mask);
+  gint GSEAL (green_shift);
+  gint GSEAL (green_prec);
+
+  guint32 GSEAL (blue_mask);
+  gint GSEAL (blue_shift);
+  gint GSEAL (blue_prec);
 };
 
 GType         gdk_visual_get_type            (void) G_GNUC_CONST;
@@ -119,6 +119,24 @@ GList* gdk_list_visuals (void);
 
 GdkScreen *gdk_visual_get_screen (GdkVisual *visual);
 
+GdkVisualType gdk_visual_get_visual_type         (GdkVisual *visual);
+gint          gdk_visual_get_depth               (GdkVisual *visual);
+GdkByteOrder  gdk_visual_get_byte_order          (GdkVisual *visual);
+gint          gdk_visual_get_colormap_size       (GdkVisual *visual);
+gint          gdk_visual_get_bits_per_rgb        (GdkVisual *visual);
+void          gdk_visual_get_red_pixel_details   (GdkVisual *visual,
+                                                  guint32   *mask,
+                                                  gint      *shift,
+                                                  gint      *precision);
+void          gdk_visual_get_green_pixel_details (GdkVisual *visual,
+                                                  guint32   *mask,
+                                                  gint      *shift,
+                                                  gint      *precision);
+void          gdk_visual_get_blue_pixel_details  (GdkVisual *visual,
+                                                  guint32   *mask,
+                                                  gint      *shift,
+                                                  gint      *precision);
+
 #ifndef GDK_DISABLE_DEPRECATED
 #define gdk_visual_ref(v) g_object_ref(v)
 #define gdk_visual_unref(v) g_object_unref(v)
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index e264feb..00811f3 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -7805,6 +7805,29 @@ gdk_window_move_region (GdkWindow       *window,
 }
 
 /**
+ * gdk_window_get_background:
+ * @window: a #GdkWindow.
+ * @color: (out): a #GdkColor to be filled in
+ *
+ * Sets @color to equal the current background color of @window.
+ *
+ * Since: 2.22
+ */
+void
+gdk_window_get_background (GdkWindow *window,
+                           GdkColor  *color)
+{
+  GdkWindowObject *private;
+
+  g_return_if_fail (GDK_IS_WINDOW (window));
+  g_return_if_fail (color != NULL);
+
+  private = (GdkWindowObject *) window;
+
+  *color = private->bg_color;
+}
+
+/**
  * gdk_window_set_background:
  * @window: a #GdkWindow
  * @color: an allocated #GdkColor
@@ -7817,7 +7840,7 @@ gdk_window_move_region (GdkWindow       *window,
  * The @color must be allocated; gdk_rgb_find_color() is the best way
  * to allocate a color.
  *
- * See also gdk_window_set_back_pixmap().
+ * See also gdk_window_set_background_pixmap().
  */
 void
 gdk_window_set_background (GdkWindow      *window,
@@ -7851,6 +7874,43 @@ gdk_window_set_background (GdkWindow      *window,
 }
 
 /**
+ * gdk_window_get_back_pixmap:
+ * @window: a #GdkWindow.
+ * @pixmap: (out) (allow-none): a #GdkPixmap to be filled in, or %NULL.
+ * @parent_relative: (out) (allow-none): a pointer to a #gboolean to be filled in, or %NULL.
+ *
+ * Sets @pixmap to the current background pixmap of @window.  You do not
+ * own the pointer that is returned and this pointer should not be freeed
+ * or unreferenced.  Sets @parent_relative to %TRUE if the tiling is done
+ * based on the origin of the parent window.
+ *
+ * Since: 2.22
+ */
+void
+gdk_window_get_back_pixmap (GdkWindow  *window,
+                            GdkPixmap **pixmap,
+                            gboolean   *parent_relative)
+{
+  GdkWindowObject *private;
+
+  g_return_if_fail (GDK_IS_WINDOW (window));
+
+  private = (GdkWindowObject *) window;
+
+  if (pixmap)
+    {
+      if (private->bg_pixmap == GDK_PARENT_RELATIVE_BG ||
+          private->bg_pixmap == GDK_NO_BG)
+        *pixmap = NULL;
+      else
+        *pixmap = private->bg_pixmap;
+    }
+
+  if (parent_relative)
+    *parent_relative = (private->bg_pixmap == GDK_PARENT_RELATIVE_BG);
+}
+
+/**
  * gdk_window_set_back_pixmap:
  * @window: a #GdkWindow
  * @pixmap: (allow-none): a #GdkPixmap, or %NULL
@@ -8176,8 +8236,10 @@ gdk_window_get_root_coords (GdkWindow *window,
  * @window: a child window
  * @x: X coordinate in child's coordinate system
  * @y: Y coordinate in child's coordinate system
- * @parent_x: return location for X coordinate in parent's coordinate system
- * @parent_y: return location for Y coordinate in parent's coordinate system
+ * @parent_x: (out) (allow-none): return location for X coordinate
+ * in parent's coordinate system, or %NULL
+ * @parent_y: (out) (allow-none): return location for Y coordinate
+ * in parent's coordinate system, or %NULL
  *
  * Transforms window coordinates from a child window to its parent
  * window, where the parent window is the normal parent as returned by
@@ -8238,8 +8300,8 @@ gdk_window_coords_to_parent (GdkWindow *window,
  * @window: a child window
  * @parent_x: X coordinate in parent's coordinate system
  * @parent_y: Y coordinate in parent's coordinate system
- * @x: return location for X coordinate in child's coordinate system
- * @y: return location for Y coordinate in child's coordinate system
+ * @x: (out) (allow-none): return location for X coordinate in child's coordinate system
+ * @y: (out) (allow-none): return location for Y coordinate in child's coordinate system
  *
  * Transforms window coordinates from a parent window to a child
  * window, where the parent window is the normal parent as returned by
@@ -8761,6 +8823,30 @@ gdk_window_set_static_gravities (GdkWindow *window,
 }
 
 /**
+ * gdk_window_get_composited:
+ * @window: a #GdkWindow
+ *
+ * Determines whether @window is composited.
+ *
+ * See gdk_window_set_composited().
+ *
+ * Returns: %TRUE if the window is composited.
+ *
+ * Since: 2.22
+ **/
+gboolean
+gdk_window_get_composited (GdkWindow *window)
+{
+  GdkWindowObject *private;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
+
+  private = (GdkWindowObject *)window;
+
+  return private->composited;
+}
+
+/**
  * gdk_window_set_composited:
  * @window: a #GdkWindow
  * @composited: %TRUE to set the window as composited
@@ -8875,6 +8961,120 @@ gdk_window_remove_redirection (GdkWindow *window)
     }
 }
 
+/**
+ * gdk_window_get_modal_hint:
+ * @window: A toplevel #GdkWindow.
+ *
+ * Determines whether or not the window manager is hinted that @window
+ * has modal behaviour.
+ *
+ * Return value: whether or not the window has the modal hint set.
+ *
+ * Since: 2.22
+ */
+gboolean
+gdk_window_get_modal_hint (GdkWindow *window)
+{
+  GdkWindowObject *private;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
+
+  private = (GdkWindowObject*) window;
+
+  return private->modal_hint;
+}
+
+/**
+ * gdk_window_get_accept_focus:
+ * @window: a toplevel #GdkWindow.
+ *
+ * Determines whether or not the desktop environment shuld be hinted that
+ * the window does not want to receive input focus.
+ *
+ * Return value: whether or not the window should receive input focus.
+ *
+ * Since: 2.22
+ */
+gboolean
+gdk_window_get_accept_focus (GdkWindow *window)
+{
+  GdkWindowObject *private;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
+
+  private = (GdkWindowObject *)window;
+
+  return private->accept_focus;
+}
+
+/**
+ * gdk_window_get_focus_on_map:
+ * @window: a toplevel #GdkWindow.
+ *
+ * Determines whether or not the desktop environment should be hinted that the
+ * window does not want to receive input focus when it is mapped.
+ *
+ * Return value: whether or not the window wants to receive input focus when
+ * it is mapped.
+ *
+ * Since: 2.22
+ */
+gboolean
+gdk_window_get_focus_on_map (GdkWindow *window)
+{
+  GdkWindowObject *private;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
+
+  private = (GdkWindowObject *)window;
+
+  return private->focus_on_map;
+}
+
+/**
+ * gdk_window_is_input_only:
+ * @window: a toplevel #GdkWindow
+ *
+ * Determines whether or not the window is an input only window.
+ *
+ * Return value: %TRUE if @window is input only
+ *
+ * Since: 2.22
+ */
+gboolean
+gdk_window_is_input_only (GdkWindow *window)
+{
+  GdkWindowObject *private;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
+
+  private = (GdkWindowObject *)window;
+
+  return private->input_only;
+}
+
+/**
+ * gdk_window_is_shaped:
+ * @window: a toplevel #GdkWindow
+ *
+ * Determines whether or not the window is shaped.
+ *
+ * Return value: %TRUE if @window is shaped
+ *
+ * Since: 2.22
+ */
+gboolean
+gdk_window_is_shaped (GdkWindow *window)
+{
+  GdkWindowObject *private;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
+
+  private = (GdkWindowObject *)window;
+
+  return private->shaped;
+}
+
 static void
 apply_redirect_to_children (GdkWindowObject   *private,
 			    GdkWindowRedirect *redirect)
diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h
index 2402078..73dc5aa 100644
--- a/gdk/gdkwindow.h
+++ b/gdk/gdkwindow.h
@@ -273,50 +273,50 @@ struct _GdkWindowObject
 {
   GdkDrawable parent_instance;
 
-  GdkDrawable *impl; /* window-system-specific delegate object */  
+  GdkDrawable *GSEAL (impl); /* window-system-specific delegate object */
   
-  GdkWindowObject *parent;
+  GdkWindowObject *GSEAL (parent);
 
-  gpointer user_data;
+  gpointer GSEAL (user_data);
 
-  gint x;
-  gint y;
+  gint GSEAL (x);
+  gint GSEAL (y);
   
-  gint extension_events;
+  gint GSEAL (extension_events);
 
-  GList *filters;
-  GList *children;
+  GList *GSEAL (filters);
+  GList *GSEAL (children);
 
-  GdkColor bg_color;
-  GdkPixmap *bg_pixmap;
+  GdkColor GSEAL (bg_color);
+  GdkPixmap *GSEAL (bg_pixmap);
   
-  GSList *paint_stack;
+  GSList *GSEAL (paint_stack);
   
-  GdkRegion *update_area;
-  guint update_freeze_count;
+  GdkRegion *GSEAL (update_area);
+  guint GSEAL (update_freeze_count);
   
-  guint8 window_type;
-  guint8 depth;
-  guint8 resize_count;
+  guint8 GSEAL (window_type);
+  guint8 GSEAL (depth);
+  guint8 GSEAL (resize_count);
 
-  GdkWindowState state;
+  GdkWindowState GSEAL (state);
   
-  guint guffaw_gravity : 1;
-  guint input_only : 1;
-  guint modal_hint : 1;
-  guint composited : 1;
+  guint GSEAL (guffaw_gravity) : 1;
+  guint GSEAL (input_only) : 1;
+  guint GSEAL (modal_hint) : 1;
+  guint GSEAL (composited) : 1;
   
-  guint destroyed : 2;
+  guint GSEAL (destroyed) : 2;
 
-  guint accept_focus : 1;
-  guint focus_on_map : 1;
-  guint shaped : 1;
+  guint GSEAL (accept_focus) : 1;
+  guint GSEAL (focus_on_map) : 1;
+  guint GSEAL (shaped) : 1;
   
-  GdkEventMask event_mask;
+  GdkEventMask GSEAL (event_mask);
 
-  guint update_and_descendants_freeze_count;
+  guint GSEAL (update_and_descendants_freeze_count);
 
-  GdkWindowRedirect *redirect;
+  GdkWindowRedirect *GSEAL (redirect);
 };
 #endif
 #endif
@@ -378,8 +378,10 @@ void          gdk_window_set_user_data         (GdkWindow     *window,
                                                 gpointer       user_data);
 void          gdk_window_set_override_redirect (GdkWindow     *window,
                                                 gboolean       override_redirect);
+gboolean      gdk_window_get_accept_focus      (GdkWindow     *window);
 void          gdk_window_set_accept_focus      (GdkWindow     *window,
 					        gboolean       accept_focus);
+gboolean      gdk_window_get_focus_on_map      (GdkWindow     *window);
 void          gdk_window_set_focus_on_map      (GdkWindow     *window,
 					        gboolean       focus_on_map);
 void          gdk_window_add_filter            (GdkWindow     *window,
@@ -421,6 +423,7 @@ void gdk_window_shape_combine_region (GdkWindow	      *window,
  */
 void gdk_window_set_child_shapes (GdkWindow *window);
 
+gboolean gdk_window_get_composited (GdkWindow *window);
 void gdk_window_set_composited   (GdkWindow *window,
                                   gboolean   composited);
 
@@ -453,6 +456,8 @@ void gdk_window_merge_child_input_shapes   (GdkWindow       *window);
  */
 gboolean gdk_window_is_visible     (GdkWindow *window);
 gboolean gdk_window_is_viewable    (GdkWindow *window);
+gboolean gdk_window_is_input_only  (GdkWindow *window);
+gboolean gdk_window_is_shaped      (GdkWindow *window);
 
 GdkWindowState gdk_window_get_state (GdkWindow *window);
 
@@ -489,6 +494,7 @@ void              gdk_window_set_type_hint (GdkWindow        *window,
                                             GdkWindowTypeHint hint);
 GdkWindowTypeHint gdk_window_get_type_hint (GdkWindow        *window);
 
+gboolean      gdk_window_get_modal_hint   (GdkWindow       *window);
 void          gdk_window_set_modal_hint   (GdkWindow       *window,
                                            gboolean         modal);
 
@@ -513,14 +519,19 @@ void	      gdk_window_flush             (GdkWindow          *window);
 
 void	      gdk_window_set_title	   (GdkWindow	  *window,
 					    const gchar	  *title);
-void          gdk_window_set_role          (GdkWindow       *window,
-					    const gchar     *role);
-void          gdk_window_set_startup_id    (GdkWindow       *window,
-					    const gchar     *startup_id);					  
-void          gdk_window_set_transient_for (GdkWindow       *window, 
-					    GdkWindow       *parent);
+void          gdk_window_set_role          (GdkWindow     *window,
+					    const gchar   *role);
+void          gdk_window_set_startup_id    (GdkWindow     *window,
+					    const gchar   *startup_id);
+void          gdk_window_set_transient_for (GdkWindow     *window,
+					    GdkWindow     *parent);
+void          gdk_window_get_background  (GdkWindow       *window,
+                                          GdkColor        *color);
 void	      gdk_window_set_background	 (GdkWindow	  *window,
 					  const GdkColor  *color);
+void	      gdk_window_get_back_pixmap (GdkWindow       *window,
+					  GdkPixmap	 **pixmap,
+					  gboolean	  *parent_relative);
 void	      gdk_window_set_back_pixmap (GdkWindow	  *window,
 					  GdkPixmap	  *pixmap,
 					  gboolean	   parent_relative);
diff --git a/gdk/quartz/gdkinput.c b/gdk/quartz/gdkinput.c
index d05638c..9407b08 100644
--- a/gdk/quartz/gdkinput.c
+++ b/gdk/quartz/gdkinput.c
@@ -116,6 +116,38 @@ gdk_display_list_devices (GdkDisplay *dpy)
   return _gdk_input_devices;
 }
 
+G_CONST_RETURN gchar *
+gdk_device_get_name (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), NULL);
+
+  return device->name;
+}
+
+GdkInputSource
+gdk_device_get_source (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
+
+  return device->source;
+}
+
+GdkInputMode
+gdk_device_get_mode (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
+
+  return device->mode;
+}
+
+gboolean
+gdk_device_get_has_cursor (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
+
+  return device->has_cursor;
+}
+
 void
 gdk_device_set_source (GdkDevice *device,
 		       GdkInputSource source)
@@ -123,6 +155,25 @@ gdk_device_set_source (GdkDevice *device,
   device->source = source;
 }
 
+void
+gdk_device_get_key (GdkDevice       *device,
+                    guint            index,
+                    guint           *keyval,
+                    GdkModifierType *modifiers)
+{
+  g_return_if_fail (GDK_IS_DEVICE (device));
+  g_return_if_fail (index < device->num_keys);
+
+  if (!device->keys[index].keyval &&
+      !device->keys[index].modifiers)
+    return;
+
+  if (keyval)
+    *keyval = device->keys[index].keyval;
+
+  if (modifiers)
+    *modifiers = device->keys[index].modifiers;
+}
 
 void
 gdk_device_set_key (GdkDevice      *device,
@@ -137,6 +188,16 @@ gdk_device_set_key (GdkDevice      *device,
   device->keys[index].modifiers = modifiers;
 }
 
+GdkAxisUse
+gdk_device_get_axis_use (GdkDevice *device,
+                         guint      index)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_AXIS_IGNORE);
+  g_return_val_if_fail (index < device->num_axes, GDK_AXIS_IGNORE);
+
+  return device->axes[index].use;
+}
+
 void
 gdk_device_set_axis_use (GdkDevice   *device,
 			 guint        index,
diff --git a/gdk/win32/gdkinput.c b/gdk/win32/gdkinput.c
index ca8b33a..e5ab44b 100644
--- a/gdk/win32/gdkinput.c
+++ b/gdk/win32/gdkinput.c
@@ -109,6 +109,38 @@ gdk_display_list_devices (GdkDisplay *dpy)
   return _gdk_input_devices;
 }
 
+G_CONST_RETURN gchar *
+gdk_device_get_name (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), NULL);
+
+  return device->name;
+}
+
+GdkInputSource
+gdk_device_get_source (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
+
+  return device->source;
+}
+
+GdkInputMode
+gdk_device_get_mode (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
+
+  return device->mode;
+}
+
+gboolean
+gdk_device_get_has_cursor (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
+
+  return device->has_cursor;
+}
+
 void
 gdk_device_set_source (GdkDevice      *device,
 		       GdkInputSource  source)
@@ -119,6 +151,26 @@ gdk_device_set_source (GdkDevice      *device,
 }
 
 void
+gdk_device_get_key (GdkDevice       *device,
+                    guint            index,
+                    guint           *keyval,
+                    GdkModifierType *modifiers)
+{
+  g_return__if_fail (GDK_IS_DEVICE (device));
+  g_return_if_fail (index < device->num_keys);
+
+  if (!device->keys[index].keyval &&
+      !device->keys[index].modifiers)
+    return;
+
+  if (keyval)
+    *keyval = device->keys[index].keyval;
+
+  if (modifiers)
+    *modifiers = device->keys[index].modifiers;
+}
+
+void
 gdk_device_set_key (GdkDevice      *device,
 		    guint           index,
 		    guint           keyval,
@@ -131,6 +183,16 @@ gdk_device_set_key (GdkDevice      *device,
   device->keys[index].modifiers = modifiers;
 }
 
+GdkAxisUse
+gdk_device_get_axis_use (GdkDevice *device,
+                         guint      index)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_AXIS_IGNORE);
+  g_return_val_if_fail (index < device->num_axes, GDK_AXIS_IGNORE);
+
+  return device->axes[index].use;
+}
+
 void
 gdk_device_set_axis_use (GdkDevice   *device,
 			 guint        index,
diff --git a/gdk/x11/gdkinput.c b/gdk/x11/gdkinput.c
index 72eb5ab..fb2f810 100644
--- a/gdk/x11/gdkinput.c
+++ b/gdk/x11/gdkinput.c
@@ -170,6 +170,78 @@ gdk_display_list_devices (GdkDisplay *display)
   return GDK_DISPLAY_X11 (display)->input_devices;
 }
 
+/**
+ * gdk_device_get_name:
+ * @device: a #GdkDevice
+ *
+ * Determines the name of the device.
+ *
+ * Return value: a name
+ *
+ * Since: 2.22
+ **/
+const gchar *
+gdk_device_get_name (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), NULL);
+
+  return device->name;
+}
+
+/**
+ * gdk_device_get_source:
+ * @device: a #GdkDevice
+ *
+ * Determines the type of the device.
+ *
+ * Return value: a #GdkInputSource
+ *
+ * Since: 2.22
+ **/
+GdkInputSource
+gdk_device_get_source (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
+
+  return device->source;
+}
+
+/**
+ * gdk_device_get_mode:
+ * @device: a #GdkDevice
+ *
+ * Determines the mode of the device.
+ *
+ * Return value: a #GdkInputSource
+ *
+ * Since: 2.22
+ **/
+GdkInputMode
+gdk_device_get_mode (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
+
+  return device->mode;
+}
+
+/**
+ * gdk_device_get_has_cursor:
+ * @device: a #GdkDevice
+ *
+ * Determines whether the pointer follows device motion.
+ *
+ * Return value: %TRUE if the pointer follows device motion
+ *
+ * Since: 2.22
+ **/
+gboolean
+gdk_device_get_has_cursor (GdkDevice *device)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
+
+  return device->has_cursor;
+}
+
 void
 gdk_device_set_source (GdkDevice      *device,
 		       GdkInputSource  source)
@@ -179,6 +251,38 @@ gdk_device_set_source (GdkDevice      *device,
   device->source = source;
 }
 
+/**
+ * gdk_device_get_key:
+ * @device: a #GdkDevice.
+ * @index: the index of the macro button to get.
+ * @keyval: return value for the keyval.
+ * @modifiers: return value for modifiers.
+ *
+ * If @index has a valid keyval, this function will
+ * fill in @keyval and @modifiers with the keyval settings.
+ *
+ * Since: 2.22
+ **/
+void
+gdk_device_get_key (GdkDevice       *device,
+                    guint            index,
+                    guint           *keyval,
+                    GdkModifierType *modifiers)
+{
+  g_return_if_fail (GDK_IS_DEVICE (device));
+  g_return_if_fail (index < device->num_keys);
+
+  if (!device->keys[index].keyval &&
+      !device->keys[index].modifiers)
+    return;
+
+  if (keyval)
+    *keyval = device->keys[index].keyval;
+
+  if (modifiers)
+    *modifiers = device->keys[index].modifiers;
+}
+
 void
 gdk_device_set_key (GdkDevice      *device,
 		    guint           index,
@@ -192,6 +296,27 @@ gdk_device_set_key (GdkDevice      *device,
   device->keys[index].modifiers = modifiers;
 }
 
+/**
+ * gdk_device_get_axis_use:
+ * @device: a #GdkDevice.
+ * @index: the index of the axis.
+ *
+ * Returns the axis use for @index.
+ *
+ * Returns: a #GdkAxisUse specifying how the axis is used.
+ *
+ * Since: 2.22
+ **/
+GdkAxisUse
+gdk_device_get_axis_use (GdkDevice *device,
+                         guint      index)
+{
+  g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_AXIS_IGNORE);
+  g_return_val_if_fail (index < device->num_axes, GDK_AXIS_IGNORE);
+
+  return device->axes[index].use;
+}
+
 void
 gdk_device_set_axis_use (GdkDevice   *device,
 			 guint        index,



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