diff finch/gntconv.c @ 31894:a9e077fb65e9

Add a cleared-message-history conversation signal, and use it in Pidgin and Finch This stems out of an email discussion with Andrew Victor back in July 2010 regarding letting protocol plugins clear the message scrollback area for UIs. At the time, nobody objected to having the libpurple-clearing function call the UI clearing function. This should also be happily backward-compatible.
author Paul Aurich <paul@darkrain42.org>
date Thu, 31 Mar 2011 04:41:27 +0000
parents a8cc50c2279f
children 62b11ad353eb
line wrap: on
line diff
--- a/finch/gntconv.c	Wed Mar 30 22:36:30 2011 +0000
+++ b/finch/gntconv.c	Thu Mar 31 04:41:27 2011 +0000
@@ -396,10 +396,18 @@
 }
 
 static void
+cleared_message_history_cb(PurpleConversation *conv, gpointer data)
+{
+	FinchConv *ggc = FINCH_GET_DATA(conv);
+	if (ggc)
+		gnt_text_view_clear(GNT_TEXT_VIEW(ggc->tv));
+}
+
+static void
 clear_scrollback_cb(GntMenuItem *item, gpointer ggconv)
 {
 	FinchConv *ggc = ggconv;
-	gnt_text_view_clear(GNT_TEXT_VIEW(ggc->tv));
+	purple_conversation_clear_message_history(ggc->active_conv);
 }
 
 static void
@@ -1264,8 +1272,6 @@
 clear_command_cb(PurpleConversation *conv,
                  const char *cmd, char **args, char **error, void *data)
 {
-	FinchConv *ggconv = FINCH_GET_DATA(conv);
-	gnt_text_view_clear(GNT_TEXT_VIEW(ggconv->tv));
 	purple_conversation_clear_message_history(conv);
 	return PURPLE_CMD_RET_OK;
 }
@@ -1459,6 +1465,8 @@
 					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);
+	purple_signal_connect(purple_conversations_get_handle(), "cleared-message-history", finch_conv_get_handle(),
+					PURPLE_CALLBACK(cleared_message_history_cb), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_conv_get_handle(),
 					PURPLE_CALLBACK(buddy_signed_on_off), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_conv_get_handle(),