diff options
| author | bakkeby <[email protected]> | 2021-04-27 13:31:41 +0200 |
|---|---|---|
| committer | bakkeby <[email protected]> | 2021-04-27 14:01:11 +0200 |
| commit | eb66da79ca2be51c0f2b2c2d95952aeba0564bed (patch) | |
| tree | 06b2151f4acb78125b8b25dc1ed6754b0bfcccef /patch | |
| parent | a7dfcc17d5903ef66555067f6cd226afa0b5310b (diff) | |
| download | dwm-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.c | 19 |
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); } |
