summaryrefslogtreecommitdiff
path: root/src/fe-common/irc/fe-query.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fe-common/irc/fe-query.c')
-rw-r--r--src/fe-common/irc/fe-query.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/fe-common/irc/fe-query.c b/src/fe-common/irc/fe-query.c
index d93ae114..c87f7998 100644
--- a/src/fe-common/irc/fe-query.c
+++ b/src/fe-common/irc/fe-query.c
@@ -68,7 +68,13 @@ static void signal_query_destroyed(QUERY_REC *query)
g_return_if_fail(query != NULL);
window = window_item_window((WI_ITEM_REC *) query);
- if (window != NULL) window_remove_item(window, (WI_ITEM_REC *) query);
+ if (window != NULL) {
+ window_remove_item(window, (WI_ITEM_REC *) query);
+
+ if (windows->next != NULL && !query->unwanted &&
+ settings_get_bool("window_close_on_part"))
+ window_destroy(window);
+ }
}
static void signal_window_item_removed(WINDOW_REC *window, WI_ITEM_REC *item)
@@ -78,7 +84,7 @@ static void signal_window_item_removed(WINDOW_REC *window, WI_ITEM_REC *item)
g_return_if_fail(window != NULL);
query = irc_item_query(item);
- if (query != NULL) query_destroy(query);
+ if (query != NULL) query_destroy(query);
}
static void sig_server_connected(IRC_SERVER_REC *server)
@@ -169,7 +175,7 @@ static int sig_query_autoclose(void)
window = window_item_window((WI_ITEM_REC *) rec);
if (window != active_win && rec->new_data == 0 &&
now-window->last_line > query_auto_close)
- query_destroy(rec);
+ query_destroy(rec);
}
return 1;
}