PropModeReplace, (unsigned char *)data, 2);
}
-static void
-togglemax(Client *c) {
- XEvent ev;
-
- if(c->isfixed)
- return;
- if((c->ismax = !c->ismax)) {
- c->rx = c->x;
- c->ry = c->y;
- c->rw = c->w;
- c->rh = c->h;
- resize(c, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, True);
- }
- else
- resize(c, c->rx, c->ry, c->rw, c->rh, True);
- while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
-}
-
static int
xerrordummy(Display *dsply, XErrorEvent *ee) {
return 0;
}
void
-focusnext(Arg *arg) {
- Client *c;
-
- if(!sel)
- return;
- for(c = sel->next; c && !isvisible(c); c = c->next);
- if(!c)
- for(c = clients; c && !isvisible(c); c = c->next);
- if(c) {
- focus(c);
- restack();
- }
-}
-
-void
-focusprev(Arg *arg) {
- Client *c;
+killclient(const char *arg) {
+ XEvent ev;
if(!sel)
return;
- for(c = sel->prev; c && !isvisible(c); c = c->prev);
- if(!c) {
- for(c = clients; c && c->next; c = c->next);
- for(; c && !isvisible(c); c = c->prev);
+ if(isprotodel(sel)) {
+ ev.type = ClientMessage;
+ ev.xclient.window = sel->win;
+ ev.xclient.message_type = wmatom[WMProtocols];
+ ev.xclient.format = 32;
+ ev.xclient.data.l[0] = wmatom[WMDelete];
+ ev.xclient.data.l[1] = CurrentTime;
+ XSendEvent(dpy, sel->win, False, NoEventMask, &ev);
}
- if(c) {
- focus(c);
- restack();
- }
-}
-
-void
-killclient(Arg *arg) {
- if(!sel)
- return;
- if(isprotodel(sel))
- sendevent(sel->win, wmatom[WMProtocols], wmatom[WMDelete]);
else
XKillClient(dpy, sel->win);
}
updatetitle(c);
for(t = clients; t && t->win != trans; t = t->next);
settags(c, t);
- if(!c->isfloat)
- c->isfloat = (t != NULL) || c->isfixed;
+ if(!c->isfloating)
+ c->isfloating = (t != NULL) || c->isfixed;
attach(c);
attachstack(c);
c->isbanned = True;
lt->arrange();
}
-Client *
-nexttiled(Client *c) {
- for(; c && (c->isfloat || !isvisible(c)); c = c->next);
- return c;
-}
-
void
resize(Client *c, int x, int y, int w, int h, Bool sizehints) {
float actual, dx, dy, max, min;
}
}
+void
+togglefloating(const char *arg) {
+ if(!sel || lt->arrange == floating)
+ return;
+ sel->isfloating = !sel->isfloating;
+ lt->arrange();
+}
+
void
updatesizehints(Client *c) {
long msize;
XUngrabServer(dpy);
lt->arrange();
}
-
-void
-zoom(Arg *arg) {
- unsigned int n;
- Client *c;
-
- if(!sel)
- return;
- if(sel->isfloat || (lt->arrange == dofloat)) {
- togglemax(sel);
- return;
- }
- for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
- n++;
- if((c = sel) == nexttiled(clients))
- if(!(c = nexttiled(c->next)))
- return;
- detach(c);
- attach(c);
- focus(c);
- lt->arrange();
-}