diff src/away.c @ 1775:9ca22174da76

[gaim-migrate @ 1785] cleaning up some stuff of rob's committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Mon, 30 Apr 2001 08:33:25 +0000
parents 9d0c91c705b7
children 0da2a831c0ae
line wrap: on
line diff
--- a/src/away.c	Mon Apr 30 07:00:15 2001 +0000
+++ b/src/away.c	Mon Apr 30 08:33:25 2001 +0000
@@ -60,45 +60,32 @@
 void purge_away_queue()
 {
 	struct conversation *cnv;
-	GSList *templist = message_queue;
 
 	gtk_clist_freeze(GTK_CLIST(clistqueue));
 	gtk_clist_clear(GTK_CLIST(clistqueue));
 
-	while (templist)
-	{
-		struct queued_message *qm = (struct queued_message *)templist->data;
+	while (message_queue) {
+		struct queued_message *qm = message_queue->data;
 
 		cnv = find_conversation(qm->name);
-
 		if (!cnv)
 			cnv = new_conversation(qm->name);
-
-		cnv->gc = qm->gc;
-
-		write_to_conv(cnv, qm->message, WFLAG_RECV, NULL, qm->tm);
+		if (g_slist_index(connections, qm->gc) >= 0) {
+			cnv->gc = qm->gc;
+			gtk_option_menu_set_history(GTK_OPTION_MENU(cnv->menu),
+					g_slist_index(connections, qm->gc)); 
+			update_buttons_by_protocol(cnv);
+		}
 
-		free(qm->message);
+		write_to_conv(cnv, qm->message, qm->flags, NULL, qm->tm);
 
-		templist = g_slist_remove(templist, qm);
+		message_queue = g_slist_remove(message_queue, qm);
 
+		g_free(qm->message);
 		g_free(qm);
 	}
 
-	templist = away_time_queue;
-	
-	while (templist)
-	{
-		struct queued_away_response *qar = (struct queued_away_response *)templist->data;
-		
-		templist = g_slist_remove(templist, qar);
-		g_free(qar);
-	}
-
 	gtk_clist_thaw(GTK_CLIST(clistqueue));
-	
-	message_queue = NULL;
-	away_time_queue = NULL;
 }
 
 void toggle_away_queue()
@@ -106,18 +93,14 @@
 	if (!clistqueue || !clistqueuesw)
 		return;
 	
-	if (general_options & OPT_GEN_QUEUE_WHEN_AWAY)
-	{
+	if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) {
 		gtk_widget_show(clistqueue);
 		gtk_widget_show(clistqueuesw);
-	}
-	else
-	{
+	} else {
 		gtk_widget_hide(clistqueue);
 		gtk_widget_hide(clistqueuesw);
 		purge_away_queue();
 	}
-	
 }
 
 void do_im_back(GtkWidget *w, GtkWidget *x)
@@ -133,6 +116,12 @@
 			return;
 	}
 
+	while (away_time_queue) {
+		struct queued_away_response *qar = away_time_queue->data;
+		away_time_queue = g_slist_remove(away_time_queue, qar);
+		g_free(qar);
+	}
+
 	serv_set_away_all(NULL);
 	awaymessage = NULL;
 #ifdef USE_APPLET
@@ -208,8 +197,7 @@
 		gtk_signal_connect(GTK_OBJECT(back), "clicked", GTK_SIGNAL_FUNC(do_im_back), imaway);
 
 		/* Finish up */
-		if (general_options & OPT_GEN_QUEUE_WHEN_AWAY)
-		{
+		if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) {
 			gtk_widget_show(clistqueuesw);
 			gtk_widget_show(clistqueue);
 		}
@@ -238,13 +226,12 @@
 #endif
 
 	/* New away message... Clear out the old sent_aways */
-	while (cnv) {
-		c = (struct conversation *)cnv->data;
-		c->sent_away = 0;
-		cnv = cnv->next;
+	while (away_time_queue) {
+		struct queued_away_response *qar = away_time_queue->data;
+		away_time_queue = g_slist_remove(away_time_queue, qar);
+		g_free(qar);
 	}
 
-
 	buf2 = g_malloc(strlen(awaymessage->message) * 4 + 1);
 	strncpy_withhtml(buf2, awaymessage->message, strlen(awaymessage->message) * 4 + 1);
 	serv_set_away_all(buf2);