diff options
author | Owen Taylor <otaylor@redhat.com> | 1999-02-10 15:45:19 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1999-02-10 15:45:19 +0000 |
commit | c9312d02a4a653f7bbd56eb3c51514f57195800b (patch) | |
tree | ab1dca4d68c1928aea125fbdaf54aa16188e1242 /gdk | |
parent | 88c112cde83285ec9f72f0413c12e5532139ba2f (diff) | |
download | gdk-pixbuf-c9312d02a4a653f7bbd56eb3c51514f57195800b.tar.gz |
Supplement the existing WMNormalHints, don't overwrite them.
Wed Feb 10 10:43:50 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
Supplement the existing WMNormalHints, don't
overwrite them.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkwindow.c | 43 | ||||
-rw-r--r-- | gdk/x11/gdkwindow-x11.c | 43 |
2 files changed, 52 insertions, 34 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index e941db46f..076d76378 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -2008,7 +2008,7 @@ gdk_window_set_icon (GdkWindow *window, GdkPixmap *pixmap, GdkBitmap *mask) { - XWMHints wm_hints; + XWMHints *wm_hints; GdkWindowPrivate *window_private; GdkWindowPrivate *private; @@ -2016,31 +2016,34 @@ gdk_window_set_icon (GdkWindow *window, window_private = (GdkWindowPrivate*) window; if (window_private->destroyed) return; - - wm_hints.flags = 0; - + + wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow); + if (!wm_hints) + wm_hints = XAllocWMHints (); + if (icon_window != NULL) { private = (GdkWindowPrivate *)icon_window; - wm_hints.flags |= IconWindowHint; - wm_hints.icon_window = private->xwindow; + wm_hints->flags |= IconWindowHint; + wm_hints->icon_window = private->xwindow; } if (pixmap != NULL) { private = (GdkWindowPrivate *)pixmap; - wm_hints.flags |= IconPixmapHint; - wm_hints.icon_pixmap = private->xwindow; + wm_hints->flags |= IconPixmapHint; + wm_hints->icon_pixmap = private->xwindow; } if (mask != NULL) { private = (GdkWindowPrivate *)mask; - wm_hints.flags |= IconMaskHint; - wm_hints.icon_mask = private->xwindow; + wm_hints->flags |= IconMaskHint; + wm_hints->icon_mask = private->xwindow; } - - XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints); + + XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints); + XFree (wm_hints); } void @@ -2075,7 +2078,7 @@ void gdk_window_set_group (GdkWindow *window, GdkWindow *leader) { - XWMHints wm_hints; + XWMHints *wm_hints; GdkWindowPrivate *window_private; GdkWindowPrivate *private; @@ -2086,10 +2089,16 @@ gdk_window_set_group (GdkWindow *window, return; private = (GdkWindowPrivate *)leader; - wm_hints.flags = WindowGroupHint; - wm_hints.window_group = private->xwindow; - - XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints); + + wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow); + if (!wm_hints) + wm_hints = XAllocWMHints (); + + wm_hints->flags |= WindowGroupHint; + wm_hints->window_group = private->xwindow; + + XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints); + XFree (wm_hints); } static void diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index e941db46f..076d76378 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -2008,7 +2008,7 @@ gdk_window_set_icon (GdkWindow *window, GdkPixmap *pixmap, GdkBitmap *mask) { - XWMHints wm_hints; + XWMHints *wm_hints; GdkWindowPrivate *window_private; GdkWindowPrivate *private; @@ -2016,31 +2016,34 @@ gdk_window_set_icon (GdkWindow *window, window_private = (GdkWindowPrivate*) window; if (window_private->destroyed) return; - - wm_hints.flags = 0; - + + wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow); + if (!wm_hints) + wm_hints = XAllocWMHints (); + if (icon_window != NULL) { private = (GdkWindowPrivate *)icon_window; - wm_hints.flags |= IconWindowHint; - wm_hints.icon_window = private->xwindow; + wm_hints->flags |= IconWindowHint; + wm_hints->icon_window = private->xwindow; } if (pixmap != NULL) { private = (GdkWindowPrivate *)pixmap; - wm_hints.flags |= IconPixmapHint; - wm_hints.icon_pixmap = private->xwindow; + wm_hints->flags |= IconPixmapHint; + wm_hints->icon_pixmap = private->xwindow; } if (mask != NULL) { private = (GdkWindowPrivate *)mask; - wm_hints.flags |= IconMaskHint; - wm_hints.icon_mask = private->xwindow; + wm_hints->flags |= IconMaskHint; + wm_hints->icon_mask = private->xwindow; } - - XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints); + + XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints); + XFree (wm_hints); } void @@ -2075,7 +2078,7 @@ void gdk_window_set_group (GdkWindow *window, GdkWindow *leader) { - XWMHints wm_hints; + XWMHints *wm_hints; GdkWindowPrivate *window_private; GdkWindowPrivate *private; @@ -2086,10 +2089,16 @@ gdk_window_set_group (GdkWindow *window, return; private = (GdkWindowPrivate *)leader; - wm_hints.flags = WindowGroupHint; - wm_hints.window_group = private->xwindow; - - XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints); + + wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow); + if (!wm_hints) + wm_hints = XAllocWMHints (); + + wm_hints->flags |= WindowGroupHint; + wm_hints->window_group = private->xwindow; + + XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints); + XFree (wm_hints); } static void |