diff options
author | okan <okan> | 2013-04-17 13:52:20 +0000 |
---|---|---|
committer | okan <okan> | 2013-04-17 13:52:20 +0000 |
commit | 302690624e29eddb506e4a377b59eac029128f3f (patch) | |
tree | 59804d704a190ab7f347ff8112dddb25e09f0dfd /client.c | |
parent | 1dbcc394aed6f7e4161ab065516128fa94bd0149 (diff) | |
download | cwm-302690624e29eddb506e4a377b59eac029128f3f.tar.gz cwm-302690624e29eddb506e4a377b59eac029128f3f.tar.xz cwm-302690624e29eddb506e4a377b59eac029128f3f.zip |
slightly rework WM_STATE set/get to make it less ambigious; will be more clear
on what needs to change to make it right in the end.
Diffstat (limited to 'client.c')
-rw-r--r-- | client.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/client.c b/client.c index 932b4bc..01f4347 100644 --- a/client.c +++ b/client.c @@ -101,13 +101,14 @@ client_new(Window win, struct screen_ctx *sc, int mapped) if (wattr.map_state != IsViewable) { client_placecalc(cc); + client_move(cc); if ((wmhints = XGetWMHints(X_Dpy, cc->win)) != NULL) { - if (wmhints->flags & StateHint) - xu_setstate(cc, wmhints->initial_state); - + if (wmhints->flags & StateHint) { + cc->state = wmhints->initial_state; + xu_setstate(cc->win, cc->state); + } XFree(wmhints); } - client_move(cc); } client_draw_border(cc); @@ -151,7 +152,8 @@ client_delete(struct client_ctx *cc) group_client_delete(cc); XGrabServer(X_Dpy); - xu_setstate(cc, WithdrawnState); + cc->state = WithdrawnState; + xu_setstate(cc->win, cc->state); XRemoveFromSaveSet(X_Dpy, cc->win); XSync(X_Dpy, False); @@ -451,7 +453,8 @@ client_hide(struct client_ctx *cc) cc->active = 0; cc->flags |= CLIENT_HIDDEN; - xu_setstate(cc, IconicState); + cc->state = IconicState; + xu_setstate(cc->win, cc->state); if (cc == client_current()) client_none(cc->sc); @@ -463,7 +466,8 @@ client_unhide(struct client_ctx *cc) XMapRaised(X_Dpy, cc->win); cc->flags &= ~CLIENT_HIDDEN; - xu_setstate(cc, NormalState); + cc->state = NormalState; + xu_setstate(cc->win, cc->state); client_draw_border(cc); } |