Improve code of func "movestack"

This commit is contained in:
Alex Kotov 2021-11-20 22:35:06 +05:00
parent 2ccbcbabcd
commit fdd4d2cc84
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
1 changed files with 41 additions and 21 deletions

View File

@ -1011,48 +1011,68 @@ void movemouse(__attribute__((unused)) const Arg *arg)
void movestack(const Arg *arg)
{
Client *c = NULL, *p = NULL, *pc = NULL, *i;
Client *c = NULL, *p = NULL, *pc = NULL, *i = NULL;
if(arg->i > 0) {
if (arg->i > 0) {
/* find the client after selmon->sel */
for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next);
if(!c)
for(c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next);
for (
c = selmon->sel->next;
c && (!ISVISIBLE(c) || c->isfloating);
c = c->next
);
}
else {
if(!c) {
for(
c = selmon->clients;
c && (!ISVISIBLE(c) || c->isfloating);
c = c->next
);
}
} else {
/* find the client before selmon->sel */
for(i = selmon->clients; i != selmon->sel; i = i->next)
if(ISVISIBLE(i) && !i->isfloating)
for (i = selmon->clients; i != selmon->sel; i = i->next) {
if (ISVISIBLE(i) && !i->isfloating) {
c = i;
if(!c)
for(; i; i = i->next)
if(ISVISIBLE(i) && !i->isfloating)
}
}
if (!c) {
for (; i; i = i->next) {
if (ISVISIBLE(i) && !i->isfloating) {
c = i;
}
}
}
}
/* find the client before selmon->sel and c */
for(i = selmon->clients; i && (!p || !pc); i = i->next) {
if(i->next == selmon->sel)
for (i = selmon->clients; i && (!p || !pc); i = i->next) {
if (i->next == selmon->sel) {
p = i;
if(i->next == c)
}
if (i->next == c) {
pc = i;
}
}
/* swap c and selmon->sel selmon->clients in the selmon->clients list */
if(c && c != selmon->sel) {
Client *temp = selmon->sel->next==c?selmon->sel:selmon->sel->next;
if (c && c != selmon->sel) {
Client *temp = selmon->sel->next == c ? selmon->sel : selmon->sel->next;
selmon->sel->next = c->next==selmon->sel?c:c->next;
c->next = temp;
if(p && p != c)
if (p && p != c) {
p->next = c;
if(pc && pc != selmon->sel)
}
if (pc && pc != selmon->sel) {
pc->next = selmon->sel;
}
if(selmon->sel == selmon->clients)
if (selmon->sel == selmon->clients) {
selmon->clients = c;
else if(c == selmon->clients)
} else if (c == selmon->clients) {
selmon->clients = selmon->sel;
}
arrange(selmon);
}