From cf3361e5fdc2b90924519ccc8479b7fcf4e77670 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Wed, 6 Jul 2016 13:48:33 +0200 Subject: [PATCH] Make autoclose_window work when /disconnect'ing --- src/core/servers.c | 2 ++ src/fe-common/core/fe-windows.c | 2 +- src/fe-common/core/window-items.c | 2 +- src/fe-common/core/window-items.h | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/servers.c b/src/core/servers.c index d6297c4d..38b37fdb 100644 --- a/src/core/servers.c +++ b/src/core/servers.c @@ -449,6 +449,8 @@ static int server_remove_channels(SERVER_REC *server) CHANNEL_REC *channel = tmp->data; next = tmp->next; + /* mark all the channels as parted */ + channel->left = TRUE; channel_destroy(channel); found = TRUE; } diff --git a/src/fe-common/core/fe-windows.c b/src/fe-common/core/fe-windows.c index 46c1593b..503f965d 100644 --- a/src/fe-common/core/fe-windows.c +++ b/src/fe-common/core/fe-windows.c @@ -136,7 +136,7 @@ void window_destroy(WINDOW_REC *window) void window_auto_destroy(WINDOW_REC *window) { if (settings_get_bool("autoclose_windows") && windows->next != NULL && - window->items == NULL && window->bound_items == NULL && + window->items == NULL && window_bind_has_sticky(window) == FALSE && window->level == 0 && !window->immortal) window_destroy(window); } diff --git a/src/fe-common/core/window-items.c b/src/fe-common/core/window-items.c index bd6ae5e9..a1cc685d 100644 --- a/src/fe-common/core/window-items.c +++ b/src/fe-common/core/window-items.c @@ -242,7 +242,7 @@ WI_ITEM_REC *window_item_find(void *server, const char *name) return NULL; } -static int window_bind_has_sticky(WINDOW_REC *window) +int window_bind_has_sticky(WINDOW_REC *window) { GSList *tmp; diff --git a/src/fe-common/core/window-items.h b/src/fe-common/core/window-items.h index f8db3c39..04f67a4a 100644 --- a/src/fe-common/core/window-items.h +++ b/src/fe-common/core/window-items.h @@ -28,6 +28,8 @@ WI_ITEM_REC *window_item_find(void *server, const char *name); WI_ITEM_REC *window_item_find_window(WINDOW_REC *window, void *server, const char *name); +int window_bind_has_sticky(WINDOW_REC *window); + void window_items_init(void); void window_items_deinit(void);