diff options
author | Okan Demirmen <okan@cvs.openbsd.org> | 2014-01-28 13:40:41 +0000 |
---|---|---|
committer | Okan Demirmen <okan@cvs.openbsd.org> | 2014-01-28 13:40:41 +0000 |
commit | 1ed891d8ed7010f6959da2b6587c4115d383c5a3 (patch) | |
tree | 37427ce877f1fe890e5fed77e47c9a193930d563 | |
parent | 363c2b2baf4e53b9f6524a22e00d97dd4e197c66 (diff) |
The EWMH spec states that if the cardinal returned is 0xFFFFFFFF (-1)
then the window should appear on all desktops, which in our case is
assigned to group 0. Found to fix stalonetray due to the non-ewmh aware
range checking in group_movetogroup(); from Thomas Adam.
-rw-r--r-- | app/cwm/xevents.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/app/cwm/xevents.c b/app/cwm/xevents.c index 58a2a9c7a..834a5ea8a 100644 --- a/app/cwm/xevents.c +++ b/app/cwm/xevents.c @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: xevents.c,v 1.106 2014/01/22 21:48:27 okan Exp $ + * $OpenBSD: xevents.c,v 1.107 2014/01/28 13:40:40 okan Exp $ */ /* @@ -346,8 +346,17 @@ xev_handle_clientmessage(XEvent *ee) client_ptrwarp(cc); } - if (e->message_type == ewmh[_NET_WM_DESKTOP] && e->format == 32) - group_movetogroup(cc, e->data.l[0]); + if (e->message_type == ewmh[_NET_WM_DESKTOP] && e->format == 32) { + /* + * The EWMH spec states that if the cardinal returned is + * 0xFFFFFFFF (-1) then the window should appear on all + * desktops, which in our case is assigned to group 0. + */ + if (e->data.l[0] == (unsigned long)-1) + group_movetogroup(cc, 0); + else + group_movetogroup(cc, e->data.l[0]); + } if (e->message_type == ewmh[_NET_WM_STATE] && e->format == 32) xu_ewmh_handle_net_wm_state_msg(cc, |