dwm-push-20201112-61bb8b2.diff - sites - public wiki contents of suckless.org
HTML git clone git://git.suckless.org/sites
DIR Log
DIR Files
DIR Refs
---
dwm-push-20201112-61bb8b2.diff (1994B)
---
1 From b2faf234f21e61327ded730024db37bb36635e30 Mon Sep 17 00:00:00 2001
2 From: Alex Cole <ajzcole@airmail.cc>
3 Date: Thu, 12 Nov 2020 17:36:52 +1300
4 Subject: [PATCH] Push patch added
5
6 ---
7 dwm.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 1 file changed, 56 insertions(+)
9
10 diff --git a/dwm.c b/dwm.c
11 index 664c527..039ab00 100644
12 --- a/dwm.c
13 +++ b/dwm.c
14 @@ -186,7 +186,10 @@ static void motionnotify(XEvent *e);
15 static void movemouse(const Arg *arg);
16 static Client *nexttiled(Client *c);
17 static void pop(Client *);
18 +static Client *prevtiled(Client *c);
19 static void propertynotify(XEvent *e);
20 +static void pushdown(const Arg *arg);
21 +static void pushup(const Arg *arg);
22 static void quit(const Arg *arg);
23 static Monitor *recttomon(int x, int y, int w, int h);
24 static void resize(Client *c, int x, int y, int w, int h, int interact);
25 @@ -1209,6 +1212,16 @@ pop(Client *c)
26 arrange(c->mon);
27 }
28
29 +Client *
30 +prevtiled(Client *c) {
31 + Client *p, *r;
32 +
33 + for(p = selmon->clients, r = NULL; p && p != c; p = p->next)
34 + if(!p->isfloating && ISVISIBLE(p))
35 + r = p;
36 + return r;
37 +}
38 +
39 void
40 propertynotify(XEvent *e)
41 {
42 @@ -1246,6 +1259,49 @@ propertynotify(XEvent *e)
43 }
44 }
45
46 +void
47 +pushdown(const Arg *arg) {
48 + Client *sel = selmon->sel, *c;
49 +
50 + if(!sel || sel->isfloating)
51 + return;
52 + if((c = nexttiled(sel->next))) {
53 + detach(sel);
54 + sel->next = c->next;
55 + c->next = sel;
56 + } else {
57 + detach(sel);
58 + attach(sel);
59 + }
60 + focus(sel);
61 + arrange(selmon);
62 +}
63 +
64 +void
65 +pushup(const Arg *arg) {
66 + Client *sel = selmon->sel, *c;
67 +
68 + if(!sel || sel->isfloating)
69 + return;
70 + if((c = prevtiled(sel))) {
71 + detach(sel);
72 + sel->next = c;
73 + if(selmon->clients == c)
74 + selmon->clients = sel;
75 + else {
76 + for(c = selmon->clients; c->next != sel->next; c = c->next);
77 + c->next = sel;
78 + }
79 + } else {
80 + for(c = sel; c->next; c = c->next);
81 + detach(sel);
82 + sel->next = NULL;
83 + c->next = sel;
84 + }
85 + focus(sel);
86 + arrange(selmon);
87 +}
88 +
89 void
90 quit(const Arg *arg)
91 {
92 --
93 2.29.2
94