From 01320e5773768827b5754470d3ed52392151f67a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 28 Dec 2011 11:20:47 -0500 Subject: [PATCH] Fix problems with sticky handling Reading a card32 property into a long may lead to undefined high bits, so mask them off. Also, make the conditions for setting and unsetting the stick flag opposites, to avoid unintended changes. Patch by John Lindgren, bug 666842 --- gdk/x11/gdkdisplay-x11.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index 02a79682c5..49ddb6bcc1 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -203,7 +203,7 @@ do_net_wm_state_changes (GdkWindow *window) } else { - if (toplevel->have_sticky || toplevel->on_all_desktops) + if (toplevel->have_sticky && toplevel->on_all_desktops) gdk_synthesize_window_state (window, 0, GDK_WINDOW_STATE_STICKY); @@ -284,7 +284,7 @@ gdk_check_wm_desktop_changed (GdkWindow *window) if (type != None) { desktop = (gulong *)data; - toplevel->on_all_desktops = (*desktop == 0xFFFFFFFF); + toplevel->on_all_desktops = ((*desktop & 0xFFFFFFFF) == 0xFFFFFFFF); XFree (desktop); } else