dwm-push-6.0.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.0.diff (1332B)
---
1 URL: http://dwm.suckless.org/patches/push
2 pushup and pushdown provide a way to move clients inside the clients list.
3
4 diff -r ec4baab78314 push.c
5 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6 +++ b/push.c Fri Apr 06 08:23:37 2012 +0200
7 @@ -0,0 +1,58 @@
8 +static Client *
9 +prevtiled(Client *c) {
10 + Client *p, *r;
11 +
12 + for(p = selmon->clients, r = NULL; p && p != c; p = p->next)
13 + if(!p->isfloating && ISVISIBLE(p))
14 + r = p;
15 + return r;
16 +}
17 +
18 +static void
19 +pushup(const Arg *arg) {
20 + Client *sel = selmon->sel;
21 + Client *c;
22 +
23 + if(!sel || sel->isfloating)
24 + return;
25 + if((c = prevtiled(sel))) {
26 + /* attach before c */
27 + detach(sel);
28 + sel->next = c;
29 + if(selmon->clients == c)
30 + selmon->clients = sel;
31 + else {
32 + for(c = selmon->clients; c->next != sel->next; c = c->next);
33 + c->next = sel;
34 + }
35 + } else {
36 + /* move to the end */
37 + for(c = sel; c->next; c = c->next);
38 + detach(sel);
39 + sel->next = NULL;
40 + c->next = sel;
41 + }
42 + focus(sel);
43 + arrange(selmon);
44 +}
45 +
46 +static void
47 +pushdown(const Arg *arg) {
48 + Client *sel = selmon->sel;
49 + Client *c;
50 +
51 + if(!sel || sel->isfloating)
52 + return;
53 + if((c = nexttiled(sel->next))) {
54 + /* attach after c */
55 + detach(sel);
56 + sel->next = c->next;
57 + c->next = sel;
58 + } else {
59 + /* move to the front */
60 + detach(sel);
61 + attach(sel);
62 + }
63 + focus(sel);
64 + arrange(selmon);
65 +}