From 4688ad181da14be36e034918580ec0ce5968ffdb Mon Sep 17 00:00:00 2001 From: arg@10ksloc.org Date: Thu, 20 Jul 2006 15:07:35 +0200 Subject: made status bar drawing more robust, implemented togglemax and togglemode, works quite well --- client.c | 53 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) (limited to 'client.c') 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, @@ -263,19 +267,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) { @@ -404,6 +395,38 @@ settitle(Client *c) resizetitle(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) { -- cgit v1.2.3