summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@gtk.org>1998-05-01 04:55:13 +0000
committerOwen Taylor <otaylor@src.gnome.org>1998-05-01 04:55:13 +0000
commit005626bd4db316534e0f6ac93432570e7bafddc2 (patch)
tree72e7f0922cce2a65e947f9899ae49227f81274a0 /gdk
parent05bc6a5b3639869eee69cfa4a2db8b8968b247cb (diff)
downloadgtk+-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.c20
-rw-r--r--gdk/x11/gdkwindow-x11.c20
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;