sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-push_no_master-6.1.diff (1557B)


      1 diff --git a/dwm.c b/dwm.c
      2 index 0362114..d61d736 100644
      3 --- a/dwm.c
      4 +++ b/dwm.c
      5 @@ -186,7 +186,10 @@ static void motionnotify(XEvent *e);
      6  static void movemouse(const Arg *arg);
      7  static Client *nexttiled(Client *c);
      8  static void pop(Client *);
      9 +static Client *prevtiled(Client *c);
     10  static void propertynotify(XEvent *e);
     11 +static void pushdown(const Arg *arg);
     12 +static void pushup(const Arg *arg);
     13  static void quit(const Arg *arg);
     14  static Monitor *recttomon(int x, int y, int w, int h);
     15  static void resize(Client *c, int x, int y, int w, int h, int interact);
     16 @@ -1225,6 +1228,16 @@ pop(Client *c)
     17  	arrange(c->mon);
     18  }
     19  
     20 +Client *
     21 +prevtiled(Client *c) {
     22 +	Client *p, *r;
     23 +
     24 +	for(p = selmon->clients, r = NULL; p && p != c; p = p->next)
     25 +		if(!p->isfloating && ISVISIBLE(p))
     26 +			r = p;
     27 +	return r;
     28 +}
     29 +
     30  void
     31  propertynotify(XEvent *e)
     32  {
     33 @@ -1263,6 +1276,37 @@ propertynotify(XEvent *e)
     34  }
     35  
     36  void
     37 +pushdown(const Arg *arg) {
     38 +	Client *sel = selmon->sel, *c;
     39 +
     40 +	if(!sel || sel->isfloating || sel == nexttiled(selmon->clients))
     41 +		return;
     42 +	if((c = nexttiled(sel->next))) {
     43 +		detach(sel);
     44 +		sel->next = c->next;
     45 +		c->next = sel;
     46 +	}
     47 +	focus(sel);
     48 +	arrange(selmon);
     49 +}
     50 +
     51 +void
     52 +pushup(const Arg *arg) {
     53 +	Client *sel = selmon->sel, *c;
     54 +
     55 +	if(!sel || sel->isfloating)
     56 +		return;
     57 +	if((c = prevtiled(sel)) && c != nexttiled(selmon->clients)) {
     58 +		detach(sel);
     59 +		sel->next = c;
     60 +		for(c = selmon->clients; c->next != sel->next; c = c->next);
     61 +			c->next = sel;
     62 +	}
     63 +	focus(sel);
     64 +	arrange(selmon);
     65 +}
     66 +
     67 +void
     68  quit(const Arg *arg)
     69  {
     70  	running = 0;