summaryrefslogtreecommitdiff
path: root/src/fe-common/irc/fe-channels.c
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2000-06-17 12:22:56 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2000-06-17 12:22:56 +0000
commit8ea24002690314d567ddd1677ba18c25d19b8771 (patch)
treeb46d7bf59884242df6f0544f74eb97d6b89c5cba /src/fe-common/irc/fe-channels.c
parent234e95ef94804493a3c75f957dbc6bf8af58c5b3 (diff)
downloadirssi-8ea24002690314d567ddd1677ba18c25d19b8771.zip
Added /SET reuse_unused_windows setting, default is OFF
If window_close_on_part is ON, we don't anymore close the window if we get kicked or connection gets lost. Also don't close DCC chat window if the other side disconnects. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@357 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/fe-common/irc/fe-channels.c')
-rw-r--r--src/fe-common/irc/fe-channels.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/fe-common/irc/fe-channels.c b/src/fe-common/irc/fe-channels.c
index b38db164..7cf4f5eb 100644
--- a/src/fe-common/irc/fe-channels.c
+++ b/src/fe-common/irc/fe-channels.c
@@ -25,6 +25,7 @@
#include "commands.h"
#include "levels.h"
#include "misc.h"
+#include "settings.h"
#include "irc.h"
#include "channels.h"
@@ -54,7 +55,14 @@ static void signal_channel_destroyed(CHANNEL_REC *channel)
g_return_if_fail(channel != NULL);
window = window_item_window((WI_ITEM_REC *) channel);
- if (window != NULL) window_remove_item(window, (WI_ITEM_REC *) channel);
+ if (window != NULL) {
+ window_remove_item(window, (WI_ITEM_REC *) channel);
+
+ if (windows->next != NULL && (!channel->joined || channel->left) &&
+ settings_get_bool("window_close_on_part")) {
+ window_destroy(window);
+ }
+ }
}
static void signal_window_item_removed(WINDOW_REC *window, WI_ITEM_REC *item)
@@ -235,6 +243,8 @@ static void cmd_channel_remove(const char *data)
void fe_channels_init(void)
{
+ settings_add_bool("lookandfeel", "window_close_on_part", TRUE);
+
signal_add("channel created", (SIGNAL_FUNC) signal_channel_created);
signal_add("channel destroyed", (SIGNAL_FUNC) signal_channel_destroyed);
signal_add("window item remove", (SIGNAL_FUNC) signal_window_item_removed);