# HG changeset patch # User Sadrul Habib Chowdhury # Date 1178851044 0 # Node ID d6e855aedc30e0d63518ff5e2be099431dbdabda # Parent 220b1e21d3364e298493882657f5dbcd81581cfe Notify when you leave a chat, after /part or /kick. diff -r 220b1e21d336 -r d6e855aedc30 finch/gntconv.c --- a/finch/gntconv.c Fri May 11 02:34:29 2007 +0000 +++ b/finch/gntconv.c Fri May 11 02:37:24 2007 +0000 @@ -57,6 +57,9 @@ #include "config.h" +static void finch_write_common(PurpleConversation *conv, const char *who, + const char *message, PurpleMessageFlags flags, time_t mtime); + static void send_typing_notification(GntWidget *w, FinchConv *ggconv) { @@ -268,6 +271,13 @@ g_free(title); } +static void +chat_left_cb(PurpleConversation *conv, gpointer null) +{ + finch_write_common(conv, NULL, _("You have left this chat."), + PURPLE_MESSAGE_SYSTEM, time(NULL)); +} + static gpointer finch_conv_get_handle() { @@ -519,10 +529,6 @@ if (type == PURPLE_CONV_TYPE_IM) { g_signal_connect(G_OBJECT(ggc->entry), "text_changed", G_CALLBACK(send_typing_notification), ggc); - purple_signal_connect(purple_conversations_get_handle(), "buddy-typing", finch_conv_get_handle(), - PURPLE_CALLBACK(update_buddy_typing), NULL); - purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", finch_conv_get_handle(), - PURPLE_CALLBACK(update_buddy_typing), NULL); } g_free(title); @@ -944,10 +950,18 @@ purple_cmd_register("status", "", PURPLE_CMD_P_DEFAULT, PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, cmd_show_window, _("statuses: Show the savedstatuses window."), finch_savedstatus_show_all); + + purple_signal_connect(purple_conversations_get_handle(), "buddy-typing", finch_conv_get_handle(), + PURPLE_CALLBACK(update_buddy_typing), NULL); + purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", finch_conv_get_handle(), + PURPLE_CALLBACK(update_buddy_typing), NULL); + purple_signal_connect(purple_conversations_get_handle(), "chat-left", finch_conv_get_handle(), + PURPLE_CALLBACK(chat_left_cb), NULL); } void finch_conversation_uninit() { + purple_signals_disconnect_by_handle(finch_conv_get_handle()); } void finch_conversation_set_active(PurpleConversation *conv)