-/*
- * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
+/* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include "dwm.h"
dy = -(c->h);
break;
}
-
switch (c->grav) {
default:
break;
dx = -(c->w + c->border);
break;
}
-
if(invert) {
dx = -dx;
dy = -dy;
c = emallocz(sizeof(Client));
c->tags = emallocz(ntags * sizeof(Bool));
c->win = w;
+ c->border = 0;
c->x = c->tx = wa->x;
c->y = c->ty = wa->y;
c->w = c->tw = wa->width;
c->h = wa->height;
c->th = bh;
-
- c->border = 0;
updatesize(c);
-
if(c->x + c->w + 2 * BORDERPX > sw)
c->x = sw - c->w - 2 * BORDERPX;
if(c->x < sx)
c->y = sh - c->h - 2 * BORDERPX;
if(c->h != sh && c->y < bh)
c->y = bh;
-
c->proto = getproto(c->win);
XSelectInput(dpy, c->win,
StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
twa.override_redirect = 1;
twa.background_pixmap = ParentRelative;
twa.event_mask = ExposureMask | EnterWindowMask;
-
c->twin = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
0, DefaultDepth(dpy, screen), CopyFromParent,
DefaultVisual(dpy, screen),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
-
grabbuttons(c, False);
updatetitle(c);
settags(c, getclient(trans));
if(!c->isfloat)
- c->isfloat = trans
- || (c->maxw && c->minw &&
- c->maxw == c->minw && c->maxh == c->minh);
+ c->isfloat = trans || c->isfixed;
resizetitle(c);
-
if(clients)
clients->prev = c;
c->next = clients;
c->snext = stack;
stack = clients = c;
-
ban(c);
XMapWindow(dpy, c->win);
XMapWindow(dpy, c->twin);
if(isvisible(c))
focus(c);
- arrange(NULL);
+ arrange();
}
void
c->x = right - c->w;
if(sticky == BotLeft || sticky == BotRight)
c->y = bottom - c->h;
-
/* offscreen appearance fixes */
if(c->x + c->w < sx)
c->x = sx;
c->x = sw - c->w;
if(c->y > sh)
c->y = sh - c->h;
-
resizetitle(c);
wc.x = c->x;
wc.y = c->y;
}
else
c->minw = c->minh = 0;
+ c->isfixed = (c->maxw && c->minw && c->maxh && c->minh &&
+ c->maxw == c->minw && c->maxh == c->minh);
if(c->flags & PWinGravity)
c->grav = size.win_gravity;
else
if(!name.nitems)
return;
if(name.encoding == XA_STRING)
- strncpy(c->name, (char *)name.value, sizeof(c->name));
+ strncpy(c->name, (char *)name.value, sizeof c->name);
else {
if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success
&& n > 0 && *list)
{
- strncpy(c->name, *list, sizeof(c->name));
+ strncpy(c->name, *list, sizeof c->name);
XFreeStringList(list);
}
}
/* The server grab construct avoids race conditions. */
XGrabServer(dpy);
XSetErrorHandler(xerrordummy);
-
detach(c);
detachstack(c);
if(sel == c) {
for(nc = stack; nc && !isvisible(nc); nc = nc->snext);
focus(nc);
}
-
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
XDestroyWindow(dpy, c->twin);
-
free(c->tags);
free(c);
-
XSync(dpy, False);
XSetErrorHandler(xerror);
XUngrabServer(dpy);
- arrange(NULL);
+ arrange();
}