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