applied anydot's 3 minor patches, thank you anydot
This commit is contained in:
parent
492c6f10fc
commit
199a601611
15
client.c
15
client.c
@ -129,8 +129,8 @@ detach(Client *c) {
|
||||
|
||||
void
|
||||
focus(Client *c) {
|
||||
if(c && !isvisible(c))
|
||||
return;
|
||||
if( !c && selscreen || c && !isvisible(c))
|
||||
for(c = stack; c && !isvisible(c); c = c->snext);
|
||||
if(sel && sel != c) {
|
||||
grabbuttons(sel, False);
|
||||
XSetWindowBorder(dpy, sel->win, dc.norm[ColBorder]);
|
||||
@ -152,14 +152,6 @@ focus(Client *c) {
|
||||
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
|
||||
}
|
||||
|
||||
void
|
||||
focustopvisible(void) {
|
||||
Client *c;
|
||||
|
||||
for(c = stack; c && !isvisible(c); c = c->snext);
|
||||
focus(c);
|
||||
}
|
||||
|
||||
void
|
||||
killclient(const char *arg) {
|
||||
XEvent ev;
|
||||
@ -230,7 +222,6 @@ manage(Window w, XWindowAttributes *wa) {
|
||||
XMoveWindow(dpy, w, c->x + 2 * sw, c->y);
|
||||
XMapWindow(dpy, w);
|
||||
setclientstate(c, NormalState);
|
||||
if(isvisible(c))
|
||||
focus(c);
|
||||
lt->arrange();
|
||||
}
|
||||
@ -401,7 +392,7 @@ unmanage(Client *c) {
|
||||
detach(c);
|
||||
detachstack(c);
|
||||
if(sel == c)
|
||||
focustopvisible();
|
||||
focus(NULL);
|
||||
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
|
||||
setclientstate(c, WithdrawnState);
|
||||
free(c->tags);
|
||||
|
3
dwm.h
3
dwm.h
@ -100,8 +100,7 @@ Window root, barwin;
|
||||
void attach(Client *c); /* attaches c to global client list */
|
||||
void configure(Client *c); /* send synthetic configure event */
|
||||
void detach(Client *c); /* detaches c from global client list */
|
||||
void focus(Client *c); /* focus c, c may be NULL */
|
||||
void focustopvisible(void); /* focus top visible window on stack */
|
||||
void focus(Client *c); /* focus c if visible && !NULL, or focus top visible */
|
||||
void killclient(const char *arg); /* kill sel nicely */
|
||||
void manage(Window w, XWindowAttributes *wa); /* manage new client */
|
||||
void resize(Client *c, int x, int y,
|
||||
|
4
event.c
4
event.c
@ -242,11 +242,11 @@ enternotify(XEvent *e) {
|
||||
|
||||
if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
|
||||
return;
|
||||
if((c = getclient(ev->window)) && isvisible(c))
|
||||
if(c = getclient(ev->window))
|
||||
focus(c);
|
||||
else if(ev->window == root) {
|
||||
selscreen = True;
|
||||
focustopvisible();
|
||||
focus(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
41
layout.c
41
layout.c
@ -13,6 +13,22 @@ static unsigned int nlayouts = 0;
|
||||
static unsigned int masterw = MASTERWIDTH;
|
||||
static unsigned int nmaster = NMASTER;
|
||||
|
||||
static void
|
||||
ban(Client *c) {
|
||||
if (c->isbanned)
|
||||
return;
|
||||
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
|
||||
c->isbanned = True;
|
||||
}
|
||||
|
||||
static void
|
||||
unban(Client *c) {
|
||||
if (!c->isbanned)
|
||||
return;
|
||||
XMoveWindow(dpy, c->win, c->x, c->y);
|
||||
c->isbanned = False;
|
||||
}
|
||||
|
||||
static void
|
||||
tile(void) {
|
||||
unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th;
|
||||
@ -28,9 +44,7 @@ tile(void) {
|
||||
|
||||
for(i = 0, c = clients; c; c = c->next)
|
||||
if(isvisible(c)) {
|
||||
if(c->isbanned)
|
||||
XMoveWindow(dpy, c->win, c->x, c->y);
|
||||
c->isbanned = False;
|
||||
unban(c);
|
||||
if(c->isfloating)
|
||||
continue;
|
||||
c->ismax = False;
|
||||
@ -60,12 +74,9 @@ tile(void) {
|
||||
resize(c, nx, ny, nw, nh, False);
|
||||
i++;
|
||||
}
|
||||
else {
|
||||
c->isbanned = True;
|
||||
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
|
||||
}
|
||||
if(!sel || !isvisible(sel))
|
||||
focustopvisible();
|
||||
else
|
||||
ban(c);
|
||||
focus(NULL);
|
||||
restack();
|
||||
}
|
||||
|
||||
@ -77,20 +88,16 @@ void
|
||||
floating(void) {
|
||||
Client *c;
|
||||
|
||||
for(c = clients; c; c = c->next) {
|
||||
for(c = clients; c; c = c->next)
|
||||
if(isvisible(c)) {
|
||||
if(c->isbanned)
|
||||
XMoveWindow(dpy, c->win, c->x, c->y);
|
||||
c->isbanned = False;
|
||||
resize(c, c->x, c->y, c->w, c->h, True);
|
||||
}
|
||||
else {
|
||||
c->isbanned = True;
|
||||
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
|
||||
}
|
||||
}
|
||||
if(!sel || !isvisible(sel))
|
||||
focustopvisible();
|
||||
else
|
||||
ban(c);
|
||||
focus(NULL);
|
||||
restack();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user