summaryrefslogtreecommitdiffhomepage
path: root/patch
diff options
context:
space:
mode:
authorbakkeby <[email protected]>2021-04-27 13:31:41 +0200
committerbakkeby <[email protected]>2021-04-27 14:01:11 +0200
commiteb66da79ca2be51c0f2b2c2d95952aeba0564bed (patch)
tree06b2151f4acb78125b8b25dc1ed6754b0bfcccef /patch
parenta7dfcc17d5903ef66555067f6cd226afa0b5310b (diff)
downloaddwm-flexipatch-eb66da79ca2be51c0f2b2c2d95952aeba0564bed.tar.gz
dwm-flexipatch-eb66da79ca2be51c0f2b2c2d95952aeba0564bed.zip
anybar: make sure to free the bar when unmanaging an external bar plus misc improvements ref. #118
Diffstat (limited to 'patch')
-rw-r--r--patch/bar_anybar.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/patch/bar_anybar.c b/patch/bar_anybar.c
index 05b2513..fa6b4d2 100644
--- a/patch/bar_anybar.c
+++ b/patch/bar_anybar.c
@@ -12,7 +12,11 @@ managealtbar(Window win, XWindowAttributes *wa)
bar->topbar = topbar;
} else if (bar && bar->win) {
bar->next = ecalloc(1, sizeof(Bar));
+ #if BAR_ANYBAR_STACK_BARS_PATCH
+ bar->next->topbar = topbar;
+ #else
bar->next->topbar = !bar->topbar;
+ #endif // BAR_ANYBAR_STACK_BARS_PATCH
bar = bar->next;
}
bar->external = 1;
@@ -43,18 +47,23 @@ void
unmanagealtbar(Window w)
{
Monitor *m = wintomon(w);
- Bar *bar;
+ Bar *bar, *next, *prev = NULL;
if (!m)
return;
- for (bar = m->bar; bar && bar->win; bar = bar->next)
+ for (bar = m->bar; bar && bar->win; bar = next) {
+ next = bar->next;
if (bar->win == w) {
- bar->win = 0;
- bar->by = 0;
- bar->bh = 0;
+ if (prev)
+ prev->next = next;
+ else
+ m->bar = next;
+ free(bar);
break;
}
+ prev = bar;
+ }
updatebarpos(m);
arrange(m);
}