diff options
author | Owen Taylor <otaylor@gtk.org> | 1998-05-01 04:55:13 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1998-05-01 04:55:13 +0000 |
commit | 005626bd4db316534e0f6ac93432570e7bafddc2 (patch) | |
tree | 72e7f0922cce2a65e947f9899ae49227f81274a0 /gdk | |
parent | 05bc6a5b3639869eee69cfa4a2db8b8968b247cb (diff) | |
download | gtk+-005626bd4db316534e0f6ac93432570e7bafddc2.tar.gz |
Fix up getting colormap for FOREIGN windows to go along with Raster's fix
Fri May 1 00:42:25 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_get_colormap): Fix up
getting colormap for FOREIGN windows to go along with
Raster's fix for visuals.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkwindow.c | 20 | ||||
-rw-r--r-- | gdk/x11/gdkwindow-x11.c | 20 |
2 files changed, 32 insertions, 8 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 7531d08e1f..d95327ca16 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -1185,8 +1185,11 @@ gdk_window_get_visual (GdkWindow *window) XWindowAttributes window_attributes; g_return_val_if_fail (window != NULL, NULL); - + window_private = (GdkWindowPrivate*) window; + /* Huh? ->parent is never set for a pixmap. We should just return + * null immeditately + */ while (window_private && (window_private->window_type == GDK_WINDOW_PIXMAP)) window_private = (GdkWindowPrivate*) window_private->parent; @@ -1210,14 +1213,23 @@ GdkColormap* gdk_window_get_colormap (GdkWindow *window) { GdkWindowPrivate *window_private; + XWindowAttributes window_attributes; g_return_val_if_fail (window != NULL, NULL); - window_private = (GdkWindowPrivate*) window; - + + g_return_val_if_fail (window_private->window_type != GDK_WINDOW_PIXMAP, NULL); if (!window_private->destroyed) { - return window_private->colormap; + if (window_private->window_type == GDK_WINDOW_FOREIGN) + { + XGetWindowAttributes (window_private->xdisplay, + window_private->xwindow, + &window_attributes); + return gdk_colormap_lookup (window_attributes.colormap); + } + else + return window_private->colormap; } return NULL; diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 7531d08e1f..d95327ca16 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -1185,8 +1185,11 @@ gdk_window_get_visual (GdkWindow *window) XWindowAttributes window_attributes; g_return_val_if_fail (window != NULL, NULL); - + window_private = (GdkWindowPrivate*) window; + /* Huh? ->parent is never set for a pixmap. We should just return + * null immeditately + */ while (window_private && (window_private->window_type == GDK_WINDOW_PIXMAP)) window_private = (GdkWindowPrivate*) window_private->parent; @@ -1210,14 +1213,23 @@ GdkColormap* gdk_window_get_colormap (GdkWindow *window) { GdkWindowPrivate *window_private; + XWindowAttributes window_attributes; g_return_val_if_fail (window != NULL, NULL); - window_private = (GdkWindowPrivate*) window; - + + g_return_val_if_fail (window_private->window_type != GDK_WINDOW_PIXMAP, NULL); if (!window_private->destroyed) { - return window_private->colormap; + if (window_private->window_type == GDK_WINDOW_FOREIGN) + { + XGetWindowAttributes (window_private->xdisplay, + window_private->xwindow, + &window_attributes); + return gdk_colormap_lookup (window_attributes.colormap); + } + else + return window_private->colormap; } return NULL; |