]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkwindow.h
Add and use gdk_window_is_toplevel when possible
[~andy/gtk] / gdk / gdkwindow.h
index f0ee7f5c8d2563b36ad85846f41bddfc6db53e4f..a3297d24ad7cf34cfe357afe49ae712ee5513c59 100644 (file)
  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GTK+ Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
  */
 
+#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
+#error "Only <gdk/gdk.h> can be included directly."
+#endif
+
 #ifndef __GDK_WINDOW_H__
 #define __GDK_WINDOW_H__
 
 
 G_BEGIN_DECLS
 
-typedef struct _GdkGeometry           GdkGeometry;
-typedef struct _GdkWindowAttr        GdkWindowAttr;
-typedef struct _GdkPointerHooks              GdkPointerHooks;
+typedef struct _GdkGeometry          GdkGeometry;
+typedef struct _GdkWindowAttr        GdkWindowAttr;
+typedef struct _GdkPointerHooks      GdkPointerHooks;
+typedef struct _GdkWindowRedirect    GdkWindowRedirect;
 
 /* Classes of windows.
  *   InputOutput: Almost every window should be of this type. Such windows
@@ -72,7 +77,8 @@ typedef enum
   GDK_WINDOW_CHILD,
   GDK_WINDOW_DIALOG,
   GDK_WINDOW_TEMP,
-  GDK_WINDOW_FOREIGN
+  GDK_WINDOW_FOREIGN,
+  GDK_WINDOW_OFFSCREEN
 } GdkWindowType;
 
 /* Window attribute mask values.
@@ -254,6 +260,12 @@ typedef struct _GdkWindowObjectClass GdkWindowObjectClass;
 #define GDK_WINDOW_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WINDOW, GdkWindowObjectClass))
 #define GDK_WINDOW_OBJECT(object)    ((GdkWindowObject *) GDK_WINDOW (object))
 
+#ifndef GDK_COMPILATION
+/* We used to export all of GdkWindowObject, but we don't want to keep doing so.
+   However, there are various parts of it accessed by macros and other code,
+   so we keep the old exported version public, but in reality it is larger. */
+
+/**** DON'T CHANGE THIS STRUCT, the real version is in gdkinternals.h ****/
 struct _GdkWindowObject
 {
   GdkDrawable parent_instance;
@@ -300,7 +312,10 @@ struct _GdkWindowObject
   GdkEventMask event_mask;
 
   guint update_and_descendants_freeze_count;
+
+  GdkWindowRedirect *redirect;
 };
+#endif
 
 struct _GdkWindowObjectClass
 {
@@ -372,6 +387,7 @@ void              gdk_window_move_region           (GdkWindow       *window,
                                                const GdkRegion *region,
                                                gint             dx,
                                                gint             dy);
+gboolean      gdk_window_ensure_native        (GdkWindow       *window);
 
 /* 
  * This allows for making shaped (partially transparent) windows
@@ -501,6 +517,7 @@ void              gdk_window_set_back_pixmap (GdkWindow       *window,
                                          gboolean         parent_relative);
 void         gdk_window_set_cursor      (GdkWindow       *window,
                                          GdkCursor       *cursor);
+GdkCursor    *gdk_window_get_cursor      (GdkWindow       *window);
 void         gdk_window_get_user_data   (GdkWindow       *window,
                                          gpointer        *data);
 void         gdk_window_get_geometry    (GdkWindow       *window,
@@ -515,8 +532,13 @@ void             gdk_window_get_position    (GdkWindow       *window,
 gint         gdk_window_get_origin      (GdkWindow       *window,
                                          gint            *x,
                                          gint            *y);
+void         gdk_window_get_root_coords (GdkWindow       *window,
+                                         gint             x,
+                                         gint             y,
+                                         gint            *root_x,
+                                         gint            *root_y);
 
-#if !defined (GDK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
+#if !defined (GDK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION) || defined (GDK_COMPILATION)
 /* Used by gtk_handle_box_button_changed () */
 gboolean      gdk_window_get_deskrelative_origin (GdkWindow      *window,
                                          gint            *x,
@@ -558,7 +580,7 @@ gboolean      gdk_window_get_decorations (GdkWindow       *window,
                                          GdkWMDecoration *decorations);
 void         gdk_window_set_functions   (GdkWindow       *window,
                                          GdkWMFunction    functions);
-#ifndef GDK_MULTIHEAD_SAFE
+#if !defined(GDK_MULTIHEAD_SAFE) && !defined(GDK_DISABLE_DEPRECATED)
 GList *       gdk_window_get_toplevels   (void);
 #endif
 
@@ -638,6 +660,23 @@ GdkPointerHooks *gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks);
 
 GdkWindow *gdk_get_default_root_window (void);
 
+/* Offscreen redirection */
+GdkPixmap *gdk_offscreen_window_get_pixmap     (GdkWindow     *window);
+void       gdk_offscreen_window_set_embedder   (GdkWindow     *window,
+                                               GdkWindow     *embedder);
+GdkWindow *gdk_offscreen_window_get_embedder   (GdkWindow     *window);
+void       gdk_window_geometry_changed         (GdkWindow     *window);
+
+void       gdk_window_redirect_to_drawable   (GdkWindow     *window,
+                                              GdkDrawable   *drawable,
+                                              gint           src_x,
+                                              gint           src_y,
+                                              gint           dest_x,
+                                              gint           dest_y,
+                                              gint           width,
+                                              gint           height);
+void       gdk_window_remove_redirection     (GdkWindow     *window);
+
 #ifndef GDK_DISABLE_DEPRECATED
 #define GDK_ROOT_PARENT()             (gdk_get_default_root_window ())
 #define gdk_window_get_size            gdk_drawable_get_size