|
|
@ -18,9 +18,10 @@ max(void *aux) |
|
|
|
return; |
|
|
|
return; |
|
|
|
stack->x = sx; |
|
|
|
stack->x = sx; |
|
|
|
stack->y = bh; |
|
|
|
stack->y = bh; |
|
|
|
stack->w = sw - 2; |
|
|
|
stack->w = sw - 2 * stack->border; |
|
|
|
stack->h = sh - bh - 2; |
|
|
|
stack->h = sh - bh - 2 * stack->border; |
|
|
|
resize(stack); |
|
|
|
resize(stack); |
|
|
|
|
|
|
|
discard_events(EnterWindowMask); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
@ -43,8 +44,8 @@ arrange(void *aux) |
|
|
|
else |
|
|
|
else |
|
|
|
cols = rows; |
|
|
|
cols = rows; |
|
|
|
|
|
|
|
|
|
|
|
gw = (sw - 1) / cols; |
|
|
|
gw = (sw - 2 * c->border) / cols; |
|
|
|
gh = (sh - bh - 1) / rows; |
|
|
|
gh = (sh - bh - 2 * c->border) / rows; |
|
|
|
|
|
|
|
|
|
|
|
for(i = j = 0, c = clients; c; c = c->next) { |
|
|
|
for(i = j = 0, c = clients; c; c = c->next) { |
|
|
|
c->x = i * gw; |
|
|
|
c->x = i * gw; |
|
|
@ -57,6 +58,7 @@ arrange(void *aux) |
|
|
|
i = 0; |
|
|
|
i = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
discard_events(EnterWindowMask); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
@ -161,6 +163,10 @@ update_size(Client *c) |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
c->minw = c->minh = 0; |
|
|
|
c->minw = c->minh = 0; |
|
|
|
|
|
|
|
if(c->flags & PWinGravity) |
|
|
|
|
|
|
|
c->grav = size.win_gravity; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
c->grav = NorthWestGravity; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
@ -213,6 +219,7 @@ manage(Window w, XWindowAttributes *wa) |
|
|
|
c->tw = c->w = wa->width; |
|
|
|
c->tw = c->w = wa->width; |
|
|
|
c->h = wa->height; |
|
|
|
c->h = wa->height; |
|
|
|
c->th = bh; |
|
|
|
c->th = bh; |
|
|
|
|
|
|
|
c->border = 1; |
|
|
|
update_size(c); |
|
|
|
update_size(c); |
|
|
|
XSetWindowBorderWidth(dpy, c->win, 1); |
|
|
|
XSetWindowBorderWidth(dpy, c->win, 1); |
|
|
|
XSetWindowBorder(dpy, c->win, brush.border); |
|
|
|
XSetWindowBorder(dpy, c->win, brush.border); |
|
|
@ -246,6 +253,61 @@ manage(Window w, XWindowAttributes *wa) |
|
|
|
focus(c); |
|
|
|
focus(c); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
|
|
|
|
gravitate(Client *c, Bool invert) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int dx = 0, dy = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch(c->grav) { |
|
|
|
|
|
|
|
case StaticGravity: |
|
|
|
|
|
|
|
case NorthWestGravity: |
|
|
|
|
|
|
|
case NorthGravity: |
|
|
|
|
|
|
|
case NorthEastGravity: |
|
|
|
|
|
|
|
dy = c->border; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case EastGravity: |
|
|
|
|
|
|
|
case CenterGravity: |
|
|
|
|
|
|
|
case WestGravity: |
|
|
|
|
|
|
|
dy = -(c->h / 2) + c->border; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case SouthEastGravity: |
|
|
|
|
|
|
|
case SouthGravity: |
|
|
|
|
|
|
|
case SouthWestGravity: |
|
|
|
|
|
|
|
dy = -c->h; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (c->grav) { |
|
|
|
|
|
|
|
case StaticGravity: |
|
|
|
|
|
|
|
case NorthWestGravity: |
|
|
|
|
|
|
|
case WestGravity: |
|
|
|
|
|
|
|
case SouthWestGravity: |
|
|
|
|
|
|
|
dx = c->border; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case NorthGravity: |
|
|
|
|
|
|
|
case CenterGravity: |
|
|
|
|
|
|
|
case SouthGravity: |
|
|
|
|
|
|
|
dx = -(c->w / 2) + c->border; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case NorthEastGravity: |
|
|
|
|
|
|
|
case EastGravity: |
|
|
|
|
|
|
|
case SouthEastGravity: |
|
|
|
|
|
|
|
dx = -(c->w + c->border); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(invert) { |
|
|
|
|
|
|
|
dx = -dx; |
|
|
|
|
|
|
|
dy = -dy; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
c->x += dx; |
|
|
|
|
|
|
|
c->y += dy; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
resize(Client *c) |
|
|
|
resize(Client *c) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -260,7 +322,7 @@ resize(Client *c) |
|
|
|
e.y = c->y; |
|
|
|
e.y = c->y; |
|
|
|
e.width = c->w; |
|
|
|
e.width = c->w; |
|
|
|
e.height = c->h; |
|
|
|
e.height = c->h; |
|
|
|
e.border_width = 0; |
|
|
|
e.border_width = c->border; |
|
|
|
e.above = None; |
|
|
|
e.above = None; |
|
|
|
e.override_redirect = False; |
|
|
|
e.override_redirect = False; |
|
|
|
XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); |
|
|
|
XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); |
|
|
|