parent
cb3f58ad06
commit
604b9d5961
58
push.c
Normal file
58
push.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
static Client *
|
||||||
|
prevtiled(Client *c) {
|
||||||
|
Client *p, *r;
|
||||||
|
|
||||||
|
for(p = selmon->clients, r = NULL; p && p != c; p = p->next)
|
||||||
|
if(!p->isfloating && ISVISIBLE(p))
|
||||||
|
r = p;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
pushup(const Arg *arg) {
|
||||||
|
Client *sel = selmon->sel;
|
||||||
|
Client *c;
|
||||||
|
|
||||||
|
if(!sel || sel->isfloating)
|
||||||
|
return;
|
||||||
|
if((c = prevtiled(sel))) {
|
||||||
|
/* attach before c */
|
||||||
|
detach(sel);
|
||||||
|
sel->next = c;
|
||||||
|
if(selmon->clients == c)
|
||||||
|
selmon->clients = sel;
|
||||||
|
else {
|
||||||
|
for(c = selmon->clients; c->next != sel->next; c = c->next);
|
||||||
|
c->next = sel;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* move to the end */
|
||||||
|
for(c = sel; c->next; c = c->next);
|
||||||
|
detach(sel);
|
||||||
|
sel->next = NULL;
|
||||||
|
c->next = sel;
|
||||||
|
}
|
||||||
|
focus(sel);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
pushdown(const Arg *arg) {
|
||||||
|
Client *sel = selmon->sel;
|
||||||
|
Client *c;
|
||||||
|
|
||||||
|
if(!sel || sel->isfloating)
|
||||||
|
return;
|
||||||
|
if((c = nexttiled(sel->next))) {
|
||||||
|
/* attach after c */
|
||||||
|
detach(sel);
|
||||||
|
sel->next = c->next;
|
||||||
|
c->next = sel;
|
||||||
|
} else {
|
||||||
|
/* move to the front */
|
||||||
|
detach(sel);
|
||||||
|
attach(sel);
|
||||||
|
}
|
||||||
|
focus(sel);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user