dwm-push_no_master-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_no_master-6.0.diff (1509B)
       ---
            1 --- dwm.c        2013-03-19 00:55:43.913249297 +0100
            2 +++ dwm.c        2013-03-19 00:58:46.489912892 +0100
            3 @@ -217,7 +217,10 @@
            4  static void movemouse(const Arg *arg);
            5  static Client *nexttiled(Client *c);
            6  static void pop(Client *);
            7 +static Client *prevtiled(Client *c);
            8  static void propertynotify(XEvent *e);
            9 +static void pushdown(const Arg *arg);
           10 +static void pushup(const Arg *arg);
           11  static void quit(const Arg *arg);
           12  static Monitor *recttomon(int x, int y, int w, int h);
           13  static void resize(Client *c, int x, int y, int w, int h, Bool interact);
           14 @@ -1421,6 +1424,16 @@
           15          arrange(c->mon);
           16  }
           17  
           18 +Client *
           19 +prevtiled(Client *c) {
           20 +        Client *p, *r;
           21 +
           22 +        for(p = selmon->clients, r = NULL; p && p != c; p = p->next)
           23 +                if(!p->isfloating && ISVISIBLE(p))
           24 +                        r = p;
           25 +        return r;
           26 +}
           27 +
           28  void
           29  propertynotify(XEvent *e) {
           30          Client *c;
           31 @@ -1458,6 +1471,37 @@
           32  }
           33  
           34  void
           35 +pushdown(const Arg *arg) {
           36 +        Client *sel = selmon->sel, *c;
           37 +
           38 +        if(!sel || sel->isfloating || sel == nexttiled(selmon->clients))
           39 +                return;
           40 +        if((c = nexttiled(sel->next))) {
           41 +                detach(sel);
           42 +                sel->next = c->next;
           43 +                c->next = sel;
           44 +        }
           45 +        focus(sel);
           46 +        arrange(selmon);
           47 +}
           48 +
           49 +void
           50 +pushup(const Arg *arg) {
           51 +        Client *sel = selmon->sel, *c;
           52 +
           53 +        if(!sel || sel->isfloating)
           54 +                return;
           55 +        if((c = prevtiled(sel)) && c != nexttiled(selmon->clients)) {
           56 +                detach(sel);
           57 +                sel->next = c;
           58 +                for(c = selmon->clients; c->next != sel->next; c = c->next);
           59 +                        c->next = sel;
           60 +        }
           61 +        focus(sel);
           62 +        arrange(selmon);
           63 +}
           64 +
           65 +void
           66  quit(const Arg *arg) {
           67          running = False;
           68  }