Index: gdk/gdk.h
===================================================================
RCS file: /cvs/gnome/gtk+/gdk/gdk.h,v
retrieving revision 1.42
diff -u -r1.42 gdk.h
--- gdk.h	1998/09/25 23:04:29	1.42
+++ gdk.h	1998/10/05 22:31:48
@@ -419,6 +419,7 @@
 					 GdkBitmap  **mask,
 					 GdkColor    *transparent_color,
 					 gchar     **data);
+GdkPixmap *gdk_pixmap_foreign_new       (guint32     anid);
 GdkPixmap *gdk_pixmap_ref		(GdkPixmap  *pixmap);
 void	   gdk_pixmap_unref		(GdkPixmap  *pixmap);
 
Index: gdk/gdkpixmap.c
===================================================================
RCS file: /cvs/gnome/gtk+/gdk/gdkpixmap.c,v
retrieving revision 1.20
diff -u -r1.20 gdkpixmap.c
--- gdkpixmap.c	1998/08/25 00:06:19	1.20
+++ gdkpixmap.c	1998/10/05 22:31:51
@@ -749,6 +749,53 @@
 }
 
 GdkPixmap*
+gdk_pixmap_foreign_new (guint32 anid)
+{
+  GdkPixmap *pixmap;
+  GdkWindowPrivate *window_private;
+  GdkWindowPrivate *private;
+  Pixmap xpixmap;
+  Window root_return;
+  unsigned int x_ret, y_ret, w_ret, h_ret, bw_ret, depth_ret;
+
+  /* check to make sure we were passed something at
+     least a little sane */
+  g_return_val_if_fail((anid != 0), NULL);
+  
+  /* set the pixmap to the passed in value */
+  xpixmap = anid;
+  /* get the root window */
+  window_private = &gdk_root_parent;
+
+  /* get information about the Pixmap to fill in the structure for
+     the gdk window */
+  if (!XGetGeometry(window_private->xdisplay, xpixmap, &root_return,
+		    &x_ret, &y_ret, &w_ret, &h_ret, &bw_ret, &depth_ret))
+      return NULL;
+      
+  /* allocate a new gdk pixmap */
+  private = g_new(GdkWindowPrivate, 1);
+  pixmap = (GdkPixmap *)private;
+
+  private->xdisplay = window_private->xdisplay;
+  private->window_type = GDK_WINDOW_PIXMAP;
+  private->xwindow = xpixmap;
+  private->colormap = NULL;
+  private->parent = NULL;
+  private->x = 0;
+  private->y = 0;
+  private->width = w_ret;
+  private->height = h_ret;
+  private->resize_count = 0;
+  private->ref_count = 1;
+  private->destroyed = 0;
+  
+  gdk_xid_table_insert(&private->xwindow, pixmap);
+
+  return pixmap;
+}
+
+GdkPixmap*
 gdk_pixmap_ref (GdkPixmap *pixmap)
 {
   GdkWindowPrivate *private = (GdkWindowPrivate *)pixmap;
