diff options
author | Suleyman Farajli <suleyman@farajli.net> | 2024-08-31 11:30:43 +0400 |
---|---|---|
committer | Suleyman Farajli <suleyman@farajli.net> | 2025-05-27 23:53:47 +0400 |
commit | c93dc215fbf0bdd53cba02a53e02c2c1104818d8 (patch) | |
tree | dcfd5f13d3d9ef7a4184da8345a945418e0aad4c /dwm.c | |
parent | 90beaa6a33dc2e2bd55f078cfa833321b194d428 (diff) |
focusstack function was made more readable
Diffstat (limited to 'dwm.c')
-rw-r--r-- | dwm.c | 40 |
1 files changed, 21 insertions, 19 deletions
@@ -869,39 +869,41 @@ focusstack(const Arg *arg) if (!selmon->sel || (selmon->sel->isfullscreen && lockfullscreen)) return; + if (arg->i > 0) { - if (focusfloat) - for (c = selmon->sel->next; c && (!ISVISIBLE(c) || !c->isfloating); c = c->next); - else - for (c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); - if (focusfloat && !c) - for (c = selmon->clients; c && (!ISVISIBLE(c) || !c->isfloating); c = c->next); - if (!focusfloat && !c) - for (c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); + c = selmon->sel->next; + while (1) { + for (;c ; c = c->next) { + if (!ISVISIBLE(c)) + continue; + if (focusfloat && c->isfloating) + break; + if (!focusfloat && !c->isfloating) + break; + } + if (!c && selmon->clients) + c = selmon->clients; + else + break; + } } else { for (i = selmon->clients; i != selmon->sel; i = i->next) { - if(!focusfloat) { - if (ISVISIBLE(i) && !i->isfloating) + if(!focusfloat && ISVISIBLE(i) && !i->isfloating) c = i; - } else { - if (ISVISIBLE(i) && i->isfloating) + if (focusfloat && ISVISIBLE(i) && i->isfloating) c = i; - } } if (!c) { for (; i; i = i->next) { - if(!focusfloat) { - if (ISVISIBLE(i) && !i->isfloating) + if (!focusfloat && ISVISIBLE(i) && !i->isfloating) c = i; - } else { - if (ISVISIBLE(i) && i->isfloating) + if (focusfloat && ISVISIBLE(i) && i->isfloating) c = i; - - } } } } + if (c) { focus(c); restack(selmon); |