changeset 21845:45d1e229fadd

Dismissing the signed on elsewhere minidialog should clear all the errors; otherwise the minidialog comes back whenever you restart. (Other errors are already cleared when you close their minidialog.)
author Will Thompson <will.thompson@collabora.co.uk>
date Mon, 17 Dec 2007 12:09:19 +0000
parents a9347b5101a9
children 717176f247ab
files pidgin/gtkblist.c
diffstat 1 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/pidgin/gtkblist.c	Sun Dec 16 21:23:56 2007 +0000
+++ b/pidgin/gtkblist.c	Mon Dec 17 12:09:19 2007 +0000
@@ -4643,6 +4643,13 @@
 }
 
 static void
+clear_elsewhere_errors(PidginMiniDialog *mini_dialog,
+                       gpointer unused)
+{
+	elsewhere_foreach_account(mini_dialog, purple_account_clear_current_error);
+}
+
+static void
 ensure_signed_on_elsewhere_minidialog(PidginBuddyList *gtkblist)
 {
 	PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
@@ -4657,6 +4664,12 @@
 	pidgin_mini_dialog_add_button(mini_dialog, _("Re-enable"),
 		reconnect_elsewhere_accounts, NULL);
 
+	/* Make dismissing the dialog clear the errors.  The "destroy" signal
+	 * does not appear to fire at quit, which is fortunate!
+	 */
+	g_signal_connect(G_OBJECT(mini_dialog), "destroy",
+		(GCallback) clear_elsewhere_errors, NULL);
+
 	add_error_dialog(gtkblist, GTK_WIDGET(mini_dialog));
 
 	/* Set priv->signed_on_elsewhere to NULL when the dialog is destroyed */