Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.3673
diff -u -p -r1.3673 ChangeLog
--- mail/ChangeLog	4 Aug 2005 02:53:34 -0000	1.3673
+++ mail/ChangeLog	4 Aug 2005 03:56:40 -0000
@@ -1,3 +1,10 @@
+2005-08-04  Not Zed  <NotZed@Ximian.com>
+
+	** See bug #300881.
+
+	* em-account-editor.c (emae_setup_signatures): don't add the
+	signature listener if we've already added it.
+
 2005-08-03  Not Zed  <NotZed@Ximian.com>
 
 	* em-folder-browser.c (emfb_set_folder): not here.
Index: mail/em-account-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-account-editor.c,v
retrieving revision 1.30
diff -u -p -r1.30 em-account-editor.c
--- mail/em-account-editor.c	29 Jul 2005 06:16:15 -0000	1.30
+++ mail/em-account-editor.c	4 Aug 2005 03:56:41 -0000
@@ -684,9 +684,11 @@ emae_setup_signatures(EMAccountEditor *e
 
 	signatures = mail_config_get_signatures ();
 
-	p->sig_added_id = g_signal_connect(signatures, "signature-added", G_CALLBACK(emae_signature_added), emae);
-	p->sig_removed_id = g_signal_connect(signatures, "signature-removed", G_CALLBACK(emae_signature_removed), emae);
-	p->sig_changed_id = g_signal_connect(signatures, "signature-changed", G_CALLBACK(emae_signature_changed), emae);
+	if (p->sig_added_id == 0) {
+		p->sig_added_id = g_signal_connect(signatures, "signature-added", G_CALLBACK(emae_signature_added), emae);
+		p->sig_removed_id = g_signal_connect(signatures, "signature-removed", G_CALLBACK(emae_signature_removed), emae);
+		p->sig_changed_id = g_signal_connect(signatures, "signature-changed", G_CALLBACK(emae_signature_changed), emae);
+	}
 
 	/* we need to count the 'none' entry before using the index */
 	i = 1;
