summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--patch/bar_awesomebar.c12
-rw-r--r--patch/bar_awesomebar.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/patch/bar_awesomebar.c b/patch/bar_awesomebar.c
index 5a3a588..75155fb 100644
--- a/patch/bar_awesomebar.c
+++ b/patch/bar_awesomebar.c
@@ -116,7 +116,7 @@ hide(Client *c) {
} else {
n = nexttiled(c);
if (!n)
- n = nexttiled(c->mon->clients);
+ n = prevtiled(c);
}
focus(n);
arrange(c->mon);
@@ -149,6 +149,16 @@ togglewin(const Arg *arg)
}
}
+Client *
+prevtiled(Client *c)
+{
+ Client *p, *i;
+ for (p = NULL, i = c->mon->clients; c && i != c; i = i->next)
+ if (ISVISIBLE(i) && !HIDDEN(i))
+ p = i;
+ return p;
+}
+
void
showhideclient(const Arg *arg)
{
diff --git a/patch/bar_awesomebar.h b/patch/bar_awesomebar.h
index a99986e..83572f6 100644
--- a/patch/bar_awesomebar.h
+++ b/patch/bar_awesomebar.h
@@ -5,4 +5,5 @@ static int click_awesomebar(Bar *bar, Arg *arg, BarClickArg *a);
static void hide(Client *c);
static void show(Client *c);
static void togglewin(const Arg *arg);
+static Client *prevtiled(Client *c);
static void showhideclient(const Arg *arg); \ No newline at end of file