summaryrefslogtreecommitdiff
path: root/gdk/gdkpixmap.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1998-11-13 21:28:36 +0000
committerOwen Taylor <otaylor@src.gnome.org>1998-11-13 21:28:36 +0000
commita0ca2a7b0d905c7aa4eba64d213853afa3e87e33 (patch)
tree9537aa88ace45d6d1172aa58e720568b7e8e2547 /gdk/gdkpixmap.c
parent8b621ad059cf6727c5a23942beed1ad180cc7b84 (diff)
downloadgtk+-a0ca2a7b0d905c7aa4eba64d213853afa3e87e33.tar.gz
New function gdk_pixmap_foreign_new(). (gtk-blizzard-981005-0. Christopher
Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). (gtk-blizzard-981005-0. Christopher Blizzard <blizzard@applied-theory.com) * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and gdk_pixmap_foreign_new to gdkx.h. Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> * gtk/Makefile.am: Added rules to generate an empty GTK+ theme called "Default" upon installation. * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance of fonts and fontsets. (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) * gtk/gtkmain.c: Change test to detect glibc's utf8 based mb* functions to be more specific. * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation cleanups.
Diffstat (limited to 'gdk/gdkpixmap.c')
-rw-r--r--gdk/gdkpixmap.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/gdk/gdkpixmap.c b/gdk/gdkpixmap.c
index dfaf4822c9..291c8d7746 100644
--- a/gdk/gdkpixmap.c
+++ b/gdk/gdkpixmap.c
@@ -749,6 +749,53 @@ gdk_pixmap_create_from_xpm_d (GdkWindow *window,
}
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;