You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.2 KiB
74 lines
1.2 KiB
static Client * |
|
nextc(Client *c, float f) |
|
{ |
|
if (!f) |
|
return nexttiled(c); |
|
|
|
for (; c && !ISVISIBLE(c); c = c->next); |
|
return c; |
|
} |
|
|
|
static Client * |
|
prevc(Client *c, float f) |
|
{ |
|
Client *p, *r; |
|
|
|
for (p = selmon->clients, r = NULL; c && p && p != c; p = p->next) |
|
if ((f || !p->isfloating) && ISVISIBLE(p)) |
|
r = p; |
|
return r; |
|
} |
|
|
|
static void |
|
pushup(const Arg *arg) |
|
{ |
|
Client *sel = selmon->sel; |
|
Client *c; |
|
|
|
if (!sel || (sel->isfloating && !arg->f)) |
|
return; |
|
if ((c = prevc(sel, arg->f))) { |
|
/* 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); |
|
if (sel != c) { |
|
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 && !arg->f)) |
|
return; |
|
if ((c = nextc(sel->next, arg->f))) { |
|
/* 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); |
|
} |
|
|
|
|