diff src/multi.c @ 1817:b367beee6448

[gaim-migrate @ 1827] reworked autorecon.c. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sun, 06 May 2001 10:08:40 +0000
parents 896432d66303
children 75643b9f4261
line wrap: on
line diff
--- a/src/multi.c	Sun May 06 09:43:20 2001 +0000
+++ b/src/multi.c	Sun May 06 10:08:40 2001 +0000
@@ -613,6 +613,7 @@
 				serv_login(u);
 			}
 		} else {
+			u->gc->wants_to_die = TRUE;
 			signoff(u->gc);
 		}
 	}
@@ -627,8 +628,10 @@
 	if (row != -1) {
 		u = g_list_nth_data(aim_users, row);
 		if (u) {
-			if (u->gc)
+			if (u->gc) {
+				u->gc->wants_to_die = TRUE;
 				signoff(u->gc);
+			}
 			aim_users = g_list_remove(aim_users, u);
 			save_prefs();
 		}
@@ -784,6 +787,7 @@
 
 static void cancel_signon(GtkWidget *button, struct gaim_connection *gc)
 {
+	gc->wants_to_die = TRUE;
 	signoff(gc);
 }
 
@@ -843,11 +847,20 @@
 	gtk_statusbar_push(GTK_STATUSBAR(gc->status), 1, message);
 }
 
+static void set_kick_null(GtkObject *obj, struct aim_user *u)
+{
+	u->kick_dlg = NULL;
+}
+
 void hide_login_progress(struct gaim_connection *gc, char *why)
 {
 	char buf[2048];
 	sprintf(buf, _("%s\n%s was unable to sign on: %s"), full_date(), gc->username, why);
-	do_error_dialog(buf, _("Signon Error"));
+	if (gc->user->kick_dlg)
+		gtk_widget_destroy(gc->user->kick_dlg);
+	gc->user->kick_dlg = do_error_dialog(buf, _("Signon Error"));
+	gtk_signal_connect(GTK_OBJECT(gc->user->kick_dlg), "destroy",
+			   GTK_SIGNAL_FUNC(set_kick_null), gc->user);
 	if (gc->meter)
 		gtk_widget_destroy(gc->meter);
 	gc->meter = NULL;