diff options
author | arg@10ksloc.org <unknown> | 2006-07-20 15:07:35 +0200 |
---|---|---|
committer | arg@10ksloc.org <unknown> | 2006-07-20 15:07:35 +0200 |
commit | 4688ad181da14be36e034918580ec0ce5968ffdb (patch) | |
tree | e919b8e6e89400a8b5dac01fa611090f139d5b5f /client.c | |
parent | dc5d967ee61046f899b3b49daeb9268c8161844a (diff) | |
download | dwm-4688ad181da14be36e034918580ec0ce5968ffdb.tar.gz |
made status bar drawing more robust, implemented togglemax and togglemode, works quite well
Diffstat (limited to 'client.c')
-rw-r--r-- | client.c | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/client.c b/client.c index 889daa5..1bdebd2 100644 --- a/client.c +++ b/client.c @@ -70,6 +70,9 @@ focusnext(Arg *arg) if(!sel) return; + if(sel->ismax) + togglemax(NULL); + if(!(c = getnext(sel->next, tsel))) c = getnext(clients, tsel); if(c) { @@ -87,6 +90,9 @@ focusprev(Arg *arg) if(!sel) return; + if(sel->ismax) + togglemax(NULL); + if((c = sel->revert && sel->revert->tags[tsel] ? sel->revert : NULL)) { higher(c); focus(c); @@ -234,8 +240,6 @@ manage(Window w, XWindowAttributes *wa) c->next = clients; clients = c; - XGrabButton(dpy, Button1, ControlMask, c->win, False, ButtonPressMask, - GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button1, MODKEY, c->win, False, ButtonPressMask, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonPressMask, @@ -264,19 +268,6 @@ manage(Window w, XWindowAttributes *wa) } void -maximize(Arg *arg) -{ - if(!sel) - return; - sel->x = sx; - sel->y = sy + bh; - sel->w = sw - 2 * sel->border; - sel->h = sh - 2 * sel->border - bh; - higher(sel); - resize(sel, False, TopLeft); -} - -void pop(Client *c) { Client **l; @@ -405,6 +396,38 @@ settitle(Client *c) } void +togglemax(Arg *arg) +{ + int ox, oy, ow, oh; + XEvent ev; + + if(!sel) + return; + + if((sel->ismax = !sel->ismax)) { + ox = sel->x; + oy = sel->y; + ow = sel->w; + oh = sel->h; + sel->x = sx; + sel->y = sy + bh; + sel->w = sw - 2 * sel->border; + sel->h = sh - 2 * sel->border - bh; + + higher(sel); + resize(sel, False, TopLeft); + + sel->x = ox; + sel->y = oy; + sel->w = ow; + sel->h = oh; + } + else + resize(sel, False, TopLeft); + while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); +} + +void unmanage(Client *c) { Client **l; |