Mercurial > pidgin.yaz
comparison src/away.c @ 4274:906f61f27479
[gaim-migrate @ 4525]
(01:26:02) Robot101: guess which bugs I fixed
(01:26:14) Me: i can't
(01:26:26) Robot101: really common crash...
(01:26:35) Robot101: I fixed the return from away crash! =)
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 10 Jan 2003 06:32:14 +0000 |
parents | 7002b6f16bdf |
children | 5fb47ec9bfe4 |
comparison
equal
deleted
inserted
replaced
4273:a345395c8794 | 4274:906f61f27479 |
---|---|
51 clistqueue = NULL; | 51 clistqueue = NULL; |
52 clistqueuesw = NULL; | 52 clistqueuesw = NULL; |
53 imaway = NULL; | 53 imaway = NULL; |
54 } | 54 } |
55 | 55 |
56 void purge_away_queue(GSList *queue) | 56 void purge_away_queue(GSList **queue) |
57 { | 57 { |
58 GSList *q = *queue; | |
59 struct queued_message *qm; | |
58 struct conversation *cnv; | 60 struct conversation *cnv; |
59 | 61 |
60 gtk_clist_freeze(GTK_CLIST(clistqueue)); | 62 while (q) { |
61 gtk_clist_clear(GTK_CLIST(clistqueue)); | 63 qm = q->data; |
62 | |
63 while (queue) { | |
64 struct queued_message *qm = queue->data; | |
65 | 64 |
66 cnv = find_conversation(qm->name); | 65 cnv = find_conversation(qm->name); |
67 if (!cnv) | 66 if (!cnv) |
68 cnv = new_conversation(qm->name); | 67 cnv = new_conversation(qm->name); |
68 | |
69 if (g_slist_index(connections, qm->gc) >= 0) | 69 if (g_slist_index(connections, qm->gc) >= 0) |
70 set_convo_gc(cnv, qm->gc); | 70 set_convo_gc(cnv, qm->gc); |
71 | |
71 write_to_conv(cnv, qm->message, qm->flags, NULL, qm->tm, qm->len); | 72 write_to_conv(cnv, qm->message, qm->flags, NULL, qm->tm, qm->len); |
72 | |
73 queue = g_slist_remove(queue, qm); | |
74 | 73 |
75 g_free(qm->message); | 74 g_free(qm->message); |
76 g_free(qm); | 75 g_free(qm); |
77 } | 76 |
78 | 77 q->data = NULL; |
79 gtk_clist_thaw(GTK_CLIST(clistqueue)); | 78 q = q->next; |
79 } | |
80 | |
81 g_slist_free(*queue); | |
82 *queue = NULL; | |
80 } | 83 } |
81 | 84 |
82 void dequeue_by_buddy(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { | 85 void dequeue_by_buddy(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { |
83 char *temp; | 86 char *temp; |
84 char *name; | 87 char *name; |
132 gtk_widget_show(clistqueue); | 135 gtk_widget_show(clistqueue); |
133 gtk_widget_show(clistqueuesw); | 136 gtk_widget_show(clistqueuesw); |
134 } else { | 137 } else { |
135 gtk_widget_hide(clistqueue); | 138 gtk_widget_hide(clistqueue); |
136 gtk_widget_hide(clistqueuesw); | 139 gtk_widget_hide(clistqueuesw); |
137 purge_away_queue(message_queue); | 140 gtk_clist_clear(GTK_CLIST(clistqueue)); |
141 purge_away_queue(&message_queue); | |
138 } | 142 } |
139 } | 143 } |
140 | 144 |
141 void do_im_back(GtkWidget *w, GtkWidget *x) | 145 void do_im_back(GtkWidget *w, GtkWidget *x) |
142 { | 146 { |
143 if (imaway) { | 147 if (imaway) { |
144 GtkWidget *tmp = imaway; | 148 GtkWidget *tmp = imaway; |
145 | 149 |
146 purge_away_queue(message_queue); | 150 gtk_clist_freeze(GTK_CLIST(clistqueue)); |
151 gtk_clist_clear(GTK_CLIST(clistqueue)); | |
152 | |
153 purge_away_queue(&message_queue); | |
154 | |
155 gtk_clist_thaw(GTK_CLIST(clistqueue)); | |
147 | 156 |
148 imaway = NULL; | 157 imaway = NULL; |
149 gtk_widget_destroy(tmp); | 158 gtk_widget_destroy(tmp); |
150 if (w != tmp) | 159 if (w != tmp) |
151 return; | 160 return; |