dwm-push-20160731-56a31dc.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-push-20160731-56a31dc.diff (1514B) | |
--- | |
1 URL: http://dwm.suckless.org/patches/push | |
2 pushup and pushdown provide a way to move clients inside the clients lis… | |
3 | |
4 Index: dwm/push.c | |
5 =================================================================== | |
6 --- /dev/null | |
7 +++ dwm/push.c | |
8 @@ -0,0 +1,67 @@ | |
9 +Client * | |
10 +nextc(Client *c, float f) { | |
11 + if(!f) | |
12 + return nexttiled(c); | |
13 + | |
14 + for(; c && !ISVISIBLE(c); c = c->next); | |
15 + return c; | |
16 +} | |
17 + | |
18 +static Client * | |
19 +prevc(Client *c, float f) { | |
20 + Client *p, *r; | |
21 + | |
22 + for(p = selmon->clients, r = NULL; c && p && p != c; p = p->nex… | |
23 + if((f || !p->isfloating) && ISVISIBLE(p)) | |
24 + r = p; | |
25 + return r; | |
26 +} | |
27 + | |
28 +static void | |
29 +pushup(const Arg *arg) { | |
30 + Client *sel = selmon->sel; | |
31 + Client *c; | |
32 + | |
33 + if(!sel || (sel->isfloating && !arg->f)) | |
34 + return; | |
35 + if((c = prevc(sel, arg->f))) { | |
36 + /* attach before c */ | |
37 + detach(sel); | |
38 + sel->next = c; | |
39 + if(selmon->clients == c) | |
40 + selmon->clients = sel; | |
41 + else { | |
42 + for(c = selmon->clients; c->next != sel->next; … | |
43 + c->next = sel; | |
44 + } | |
45 + } else { | |
46 + /* move to the end */ | |
47 + for(c = sel; c->next; c = c->next); | |
48 + detach(sel); | |
49 + sel->next = NULL; | |
50 + c->next = sel; | |
51 + } | |
52 + focus(sel); | |
53 + arrange(selmon); | |
54 +} | |
55 + | |
56 +static void | |
57 +pushdown(const Arg *arg) { | |
58 + Client *sel = selmon->sel; | |
59 + Client *c; | |
60 + | |
61 + if(!sel || (sel->isfloating && !arg->f)) | |
62 + return; | |
63 + if((c = nextc(sel->next, arg->f))) { | |
64 + /* attach after c */ | |
65 + detach(sel); | |
66 + sel->next = c->next; | |
67 + c->next = sel; | |
68 + } else { | |
69 + /* move to the front */ | |
70 + detach(sel); | |
71 + attach(sel); | |
72 + } | |
73 + focus(sel); | |
74 + arrange(selmon); | |
75 +} |