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