Xinqi Bao's Git
projects
/
dwm.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
applied anydot's 3 minor patches, thank you anydot
[dwm.git]
/
client.c
diff --git
a/client.c
b/client.c
index
cf3a686
..
90399ae
100644
(file)
--- a/
client.c
+++ b/
client.c
@@
-129,8
+129,8
@@
detach(Client *c) {
void
focus(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]);
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);
}
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;
void
killclient(const char *arg) {
XEvent ev;
@@
-230,8
+222,7
@@
manage(Window w, XWindowAttributes *wa) {
XMoveWindow(dpy, w, c->x + 2 * sw, c->y);
XMapWindow(dpy, w);
setclientstate(c, NormalState);
XMoveWindow(dpy, w, c->x + 2 * sw, c->y);
XMapWindow(dpy, w);
setclientstate(c, NormalState);
- if(isvisible(c))
- focus(c);
+ focus(c);
lt->arrange();
}
lt->arrange();
}
@@
-305,6
+296,8
@@
togglefloating(const char *arg) {
if(!sel || lt->arrange == floating)
return;
sel->isfloating = !sel->isfloating;
if(!sel || lt->arrange == floating)
return;
sel->isfloating = !sel->isfloating;
+ if(sel->isfloating)
+ resize(sel, sel->x, sel->y, sel->w, sel->h, True);
lt->arrange();
}
lt->arrange();
}
@@
-399,7
+392,7
@@
unmanage(Client *c) {
detach(c);
detachstack(c);
if(sel == c)
detach(c);
detachstack(c);
if(sel == c)
- focus
topvisible(
);
+ focus
(NULL
);
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
setclientstate(c, WithdrawnState);
free(c->tags);
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
setclientstate(c, WithdrawnState);
free(c->tags);