mirror of
git://git.suckless.org/dwm
synced 2025-07-26 09:42:11 -07:00
removed c->f{x,y,w,h} and c->t{x,y,w,h} in favor for the new rule handling remembering two kinds of geometries is unnecessary, removed the randomized (x,y) setting on dofloat startup, was kind too random und unpredictable
This commit is contained in:
128
client.c
128
client.c
@@ -16,19 +16,19 @@ resizetitle(Client *c)
|
||||
{
|
||||
int i;
|
||||
|
||||
c->bw = 0;
|
||||
c->tw = 0;
|
||||
for(i = 0; i < TLast; i++)
|
||||
if(c->tags[i])
|
||||
c->bw += textw(c->tags[i]);
|
||||
c->bw += textw(c->name);
|
||||
if(c->bw > *c->w)
|
||||
c->bw = *c->w + 2;
|
||||
c->bx = *c->x + *c->w - c->bw + 2;
|
||||
c->by = *c->y;
|
||||
c->tw += textw(c->tags[i]);
|
||||
c->tw += textw(c->name);
|
||||
if(c->tw > c->w)
|
||||
c->tw = c->w + 2;
|
||||
c->tx = c->x + c->w - c->tw + 2;
|
||||
c->ty = c->y;
|
||||
if(c->tags[tsel])
|
||||
XMoveResizeWindow(dpy, c->title, c->bx, c->by, c->bw, c->bh);
|
||||
XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th);
|
||||
else
|
||||
XMoveResizeWindow(dpy, c->title, c->bx + 2 * sw, c->by, c->bw, c->bh);
|
||||
XMoveResizeWindow(dpy, c->title, c->tx + 2 * sw, c->ty, c->tw, c->th);
|
||||
|
||||
}
|
||||
|
||||
@@ -43,8 +43,8 @@ xerrordummy(Display *dsply, XErrorEvent *ee)
|
||||
void
|
||||
ban(Client *c)
|
||||
{
|
||||
XMoveWindow(dpy, c->win, *c->x + 2 * sw, *c->y);
|
||||
XMoveWindow(dpy, c->title, c->bx + 2 * sw, c->by);
|
||||
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
|
||||
XMoveWindow(dpy, c->title, c->tx + 2 * sw, c->ty);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -128,12 +128,12 @@ gravitate(Client *c, Bool invert)
|
||||
case EastGravity:
|
||||
case CenterGravity:
|
||||
case WestGravity:
|
||||
dy = -(*c->h / 2) + c->border;
|
||||
dy = -(c->h / 2) + c->border;
|
||||
break;
|
||||
case SouthEastGravity:
|
||||
case SouthGravity:
|
||||
case SouthWestGravity:
|
||||
dy = -(*c->h);
|
||||
dy = -(c->h);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -149,12 +149,12 @@ gravitate(Client *c, Bool invert)
|
||||
case NorthGravity:
|
||||
case CenterGravity:
|
||||
case SouthGravity:
|
||||
dx = -(*c->w / 2) + c->border;
|
||||
dx = -(c->w / 2) + c->border;
|
||||
break;
|
||||
case NorthEastGravity:
|
||||
case EastGravity:
|
||||
case SouthEastGravity:
|
||||
dx = -(*c->w + c->border);
|
||||
dx = -(c->w + c->border);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -164,8 +164,8 @@ gravitate(Client *c, Bool invert)
|
||||
dx = -dx;
|
||||
dy = -dy;
|
||||
}
|
||||
*c->x += dx;
|
||||
*c->y += dy;
|
||||
c->x += dx;
|
||||
c->y += dy;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -203,19 +203,14 @@ manage(Window w, XWindowAttributes *wa)
|
||||
|
||||
c = emallocz(sizeof(Client));
|
||||
c->win = w;
|
||||
c->bx = c->fx = c->tx = wa->x;
|
||||
c->by = c->fy = c->ty = wa->y;
|
||||
c->bw = c->fw = c->tw = wa->width;
|
||||
c->fh = c->th = wa->height;
|
||||
c->bh = bh;
|
||||
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;
|
||||
|
||||
diff = sw - c->fw;
|
||||
c->fx = random() % (diff ? diff : 1);
|
||||
diff = sh - c->fh - bh;
|
||||
c->fy = random() % (diff ? diff : 1);
|
||||
|
||||
if(c->fy < bh)
|
||||
c->by = c->fy = c->ty = bh;
|
||||
if(c->y < bh)
|
||||
c->y = c->ty = bh;
|
||||
|
||||
c->border = 1;
|
||||
c->proto = getproto(c->win);
|
||||
@@ -227,7 +222,7 @@ manage(Window w, XWindowAttributes *wa)
|
||||
twa.background_pixmap = ParentRelative;
|
||||
twa.event_mask = ExposureMask;
|
||||
|
||||
c->title = XCreateWindow(dpy, root, c->bx, c->by, c->bw, c->bh,
|
||||
c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
|
||||
0, DefaultDepth(dpy, screen), CopyFromParent,
|
||||
DefaultVisual(dpy, screen),
|
||||
CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
|
||||
@@ -251,9 +246,7 @@ manage(Window w, XWindowAttributes *wa)
|
||||
(c->maxw == c->minw) && (c->maxh == c->minh));
|
||||
|
||||
|
||||
setgeom(c);
|
||||
settitle(c);
|
||||
|
||||
arrange(NULL);
|
||||
|
||||
/* mapping the window now prevents flicker */
|
||||
@@ -273,10 +266,10 @@ 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;
|
||||
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);
|
||||
}
|
||||
@@ -297,43 +290,43 @@ void
|
||||
resize(Client *c, Bool inc, Corner sticky)
|
||||
{
|
||||
XConfigureEvent e;
|
||||
int right = *c->x + *c->w;
|
||||
int bottom = *c->y + *c->h;
|
||||
int right = c->x + c->w;
|
||||
int bottom = c->y + c->h;
|
||||
|
||||
if(inc) {
|
||||
if(c->incw)
|
||||
*c->w -= (*c->w - c->basew) % c->incw;
|
||||
c->w -= (c->w - c->basew) % c->incw;
|
||||
if(c->inch)
|
||||
*c->h -= (*c->h - c->baseh) % c->inch;
|
||||
c->h -= (c->h - c->baseh) % c->inch;
|
||||
}
|
||||
if(*c->x > sw) /* might happen on restart */
|
||||
*c->x = sw - *c->w;
|
||||
if(*c->y > sh)
|
||||
*c->y = sh - *c->h;
|
||||
if(c->minw && *c->w < c->minw)
|
||||
*c->w = c->minw;
|
||||
if(c->minh && *c->h < c->minh)
|
||||
*c->h = c->minh;
|
||||
if(c->maxw && *c->w > c->maxw)
|
||||
*c->w = c->maxw;
|
||||
if(c->maxh && *c->h > c->maxh)
|
||||
*c->h = c->maxh;
|
||||
if(c->x > sw) /* might happen on restart */
|
||||
c->x = sw - c->w;
|
||||
if(c->y > sh)
|
||||
c->y = sh - c->h;
|
||||
if(c->minw && c->w < c->minw)
|
||||
c->w = c->minw;
|
||||
if(c->minh && c->h < c->minh)
|
||||
c->h = c->minh;
|
||||
if(c->maxw && c->w > c->maxw)
|
||||
c->w = c->maxw;
|
||||
if(c->maxh && c->h > c->maxh)
|
||||
c->h = c->maxh;
|
||||
if(sticky == TopRight || sticky == BotRight)
|
||||
*c->x = right - *c->w;
|
||||
c->x = right - c->w;
|
||||
if(sticky == BotLeft || sticky == BotRight)
|
||||
*c->y = bottom - *c->h;
|
||||
c->y = bottom - c->h;
|
||||
|
||||
resizetitle(c);
|
||||
XSetWindowBorderWidth(dpy, c->win, 1);
|
||||
XMoveResizeWindow(dpy, c->win, *c->x, *c->y, *c->w, *c->h);
|
||||
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
||||
|
||||
e.type = ConfigureNotify;
|
||||
e.event = c->win;
|
||||
e.window = c->win;
|
||||
e.x = *c->x;
|
||||
e.y = *c->y;
|
||||
e.width = *c->w;
|
||||
e.height = *c->h;
|
||||
e.x = c->x;
|
||||
e.y = c->y;
|
||||
e.width = c->w;
|
||||
e.height = c->h;
|
||||
e.border_width = c->border;
|
||||
e.above = None;
|
||||
e.override_redirect = False;
|
||||
@@ -341,23 +334,6 @@ resize(Client *c, Bool inc, Corner sticky)
|
||||
XSync(dpy, False);
|
||||
}
|
||||
|
||||
void
|
||||
setgeom(Client *c)
|
||||
{
|
||||
if((arrange == dotile) && !c->isfloat) {
|
||||
c->x = &c->tx;
|
||||
c->y = &c->ty;
|
||||
c->w = &c->tw;
|
||||
c->h = &c->th;
|
||||
}
|
||||
else {
|
||||
c->x = &c->fx;
|
||||
c->y = &c->fy;
|
||||
c->w = &c->fw;
|
||||
c->h = &c->fh;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
setsize(Client *c)
|
||||
{
|
||||
|
Reference in New Issue
Block a user