summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarg@10ksloc.org <unknown>2006-07-20 07:26:23 +0200
committerarg@10ksloc.org <unknown>2006-07-20 07:26:23 +0200
commit11737233a7ce6bc656bc7bc061c68eeda824ee9b (patch)
tree4d2f9452d9bd1ddf3dd572ed03603d7d4abd7185
parentbcaf6a7a0f492c3fafc4baabd2dc06f5191417ee (diff)
downloaddwm-11737233a7ce6bc656bc7bc061c68eeda824ee9b.tar.gz
dwm-11737233a7ce6bc656bc7bc061c68eeda824ee9b.zip
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
Diffstat (limited to '')
-rw-r--r--client.c128
-rw-r--r--dwm.h7
-rw-r--r--event.c30
-rw-r--r--tag.c34
4 files changed, 85 insertions, 114 deletions
diff --git a/client.c b/client.c
index aa96f4f..c797972 100644
--- a/client.c
+++ b/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;
@@ -342,23 +335,6 @@ resize(Client *c, Bool inc, Corner sticky)
}
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)
{
XSizeHints size;
diff --git a/dwm.h b/dwm.h
index 9670c68..a410f4e 100644
--- a/dwm.h
+++ b/dwm.h
@@ -67,10 +67,8 @@ struct Client {
char name[256];
char *tags[TLast];
int proto;
- int *x, *y, *w, *h; /* current geom */
- int bx, by, bw, bh; /* title bar */
- int fx, fy, fw, fh; /* floating geom */
- int tx, ty, tw, th; /* tiled geom */
+ int x, y, w, h;
+ int tx, ty, tw, th; /* title */
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
int grav;
unsigned int border;
@@ -109,7 +107,6 @@ extern void manage(Window w, XWindowAttributes *wa);
extern void maximize(Arg *arg);
extern void pop(Client *c);
extern void resize(Client *c, Bool inc, Corner sticky);
-extern void setgeom(Client *c);
extern void setsize(Client *c);
extern void settitle(Client *c);
extern void unmanage(Client *c);
diff --git a/event.c b/event.c
index 05f4ac5..0f03823 100644
--- a/event.c
+++ b/event.c
@@ -70,8 +70,8 @@ movemouse(Client *c)
unsigned int dui;
Window dummy;
- ocx = *c->x;
- ocy = *c->y;
+ ocx = c->x;
+ ocy = c->y;
if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync,
None, cursor[CurMove], CurrentTime) != GrabSuccess)
return;
@@ -85,8 +85,8 @@ movemouse(Client *c)
break;
case MotionNotify:
XSync(dpy, False);
- *c->x = ocx + (ev.xmotion.x - x1);
- *c->y = ocy + (ev.xmotion.y - y1);
+ c->x = ocx + (ev.xmotion.x - x1);
+ c->y = ocy + (ev.xmotion.y - y1);
resize(c, False, TopLeft);
break;
case ButtonRelease:
@@ -103,12 +103,12 @@ resizemouse(Client *c)
int ocx, ocy;
Corner sticky;
- ocx = *c->x;
- ocy = *c->y;
+ ocx = c->x;
+ ocy = c->y;
if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync,
None, cursor[CurResize], CurrentTime) != GrabSuccess)
return;
- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, *c->w, *c->h);
+ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h);
for(;;) {
XMaskEvent(dpy, MouseMask | ExposureMask, &ev);
switch(ev.type) {
@@ -118,10 +118,10 @@ resizemouse(Client *c)
break;
case MotionNotify:
XSync(dpy, False);
- *c->w = abs(ocx - ev.xmotion.x);
- *c->h = abs(ocy - ev.xmotion.y);
- *c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - *c->w;
- *c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - *c->h;
+ c->w = abs(ocx - ev.xmotion.x);
+ c->h = abs(ocy - ev.xmotion.y);
+ c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w;
+ c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h;
if(ocx <= ev.xmotion.x)
sticky = (ocy <= ev.xmotion.y) ? TopLeft : BotLeft;
else
@@ -203,13 +203,13 @@ configurerequest(XEvent *e)
if((c = getclient(ev->window))) {
gravitate(c, True);
if(ev->value_mask & CWX)
- *c->x = ev->x;
+ c->x = ev->x;
if(ev->value_mask & CWY)
- *c->y = ev->y;
+ c->y = ev->y;
if(ev->value_mask & CWWidth)
- *c->w = ev->width;
+ c->w = ev->width;
if(ev->value_mask & CWHeight)
- *c->h = ev->height;
+ c->h = ev->height;
if(ev->value_mask & CWBorderWidth)
c->border = 1;
gravitate(c, False);
diff --git a/tag.c b/tag.c
index 82cf18a..8509867 100644
--- a/tag.c
+++ b/tag.c
@@ -53,7 +53,6 @@ dofloat(Arg *arg)
arrange = dofloat;
for(c = clients; c; c = c->next) {
- setgeom(c);
if(c->tags[tsel]) {
resize(c, True, TopLeft);
}
@@ -87,7 +86,6 @@ dotile(Arg *arg)
h = sh - bh;
for(i = 0, c = clients; c; c = c->next) {
- setgeom(c);
if(c->tags[tsel]) {
if(c->isfloat) {
higher(c);
@@ -95,28 +93,28 @@ dotile(Arg *arg)
continue;
}
if(n == 1) {
- *c->x = sx;
- *c->y = sy + bh;
- *c->w = sw - 2 * c->border;
- *c->h = sh - 2 * c->border - bh;
+ c->x = sx;
+ c->y = sy + bh;
+ c->w = sw - 2 * c->border;
+ c->h = sh - 2 * c->border - bh;
}
else if(i == 0) {
- *c->x = sx;
- *c->y = sy + bh;
- *c->w = mw - 2 * c->border;
- *c->h = sh - 2 * c->border - bh;
+ c->x = sx;
+ c->y = sy + bh;
+ c->w = mw - 2 * c->border;
+ c->h = sh - 2 * c->border - bh;
}
else if(h > bh) {
- *c->x = sx + mw;
- *c->y = sy + (i - 1) * h + bh;
- *c->w = w - 2 * c->border;
- *c->h = h - 2 * c->border;
+ c->x = sx + mw;
+ c->y = sy + (i - 1) * h + bh;
+ c->w = w - 2 * c->border;
+ c->h = h - 2 * c->border;
}
else { /* fallback if h < bh */
- *c->x = sx + mw;
- *c->y = sy + bh;
- *c->w = w - 2 * c->border;
- *c->h = sh - 2 * c->border - bh;
+ c->x = sx + mw;
+ c->y = sy + bh;
+ c->w = w - 2 * c->border;
+ c->h = sh - 2 * c->border - bh;
}
resize(c, False, TopLeft);
i++;