made status bar drawing more robust, implemented togglemax and togglemode, works quite well

This commit is contained in:
arg@10ksloc.org
2006-07-20 15:07:35 +02:00
parent dc5d967ee6
commit 4688ad181d
5 changed files with 59 additions and 33 deletions

View File

@ -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)
{