comparison src/away.c @ 6479:b808f9734879

[gaim-migrate @ 6992] (19:12:00) Robot101: replacing some slightly crufty old code which makes assumptions like AIM-only, ignores gcs, could've messed up in certain obscure circumstances. (19:12:10) Robot101: my code's probably more efficient in cpu and memory too. (19:12:28) Robot101: and it's orthogonal to my message queue work so I split it off. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Fri, 15 Aug 2003 23:13:42 +0000
parents 8f94cce8faa5
children 314111e7b601
comparison
equal deleted inserted replaced
6478:338147ea6896 6479:b808f9734879
35 #include "gtkprefs.h" 35 #include "gtkprefs.h"
36 #include "gtkutils.h" 36 #include "gtkutils.h"
37 #include "ui.h" 37 #include "ui.h"
38 38
39 GtkWidget *imaway = NULL; 39 GtkWidget *imaway = NULL;
40
41 GtkWidget *awaymenu = NULL; 40 GtkWidget *awaymenu = NULL;
42 GtkWidget *awayqueue = NULL; 41 GtkWidget *awayqueue = NULL;
43 GtkListStore *awayqueuestore = NULL; 42 GtkListStore *awayqueuestore = NULL;
44 GtkWidget *awayqueuesw; 43 GtkWidget *awayqueuesw;
45 44
45 GSList *message_queue = NULL;
46 GSList *unread_message_queue = NULL;
47
48 GSList *away_messages = NULL;
46 struct away_message *awaymessage = NULL; 49 struct away_message *awaymessage = NULL;
47 int auto_away;
48 50
49 static void dequeue_message(GtkTreeIter *iter) 51 static void dequeue_message(GtkTreeIter *iter)
50 { 52 {
51 gchar *name; 53 gchar *name;
52 GSList *templist; 54 GSList *templist;
168 170
169 imaway = NULL; 171 imaway = NULL;
170 gtk_widget_destroy(tmp); 172 gtk_widget_destroy(tmp);
171 if (w != tmp) 173 if (w != tmp)
172 return; 174 return;
173 }
174
175 while (away_time_queue) {
176 struct queued_away_response *qar = away_time_queue->data;
177 away_time_queue = g_slist_remove(away_time_queue, qar);
178 g_free(qar);
179 } 175 }
180 176
181 awaymessage = NULL; 177 awaymessage = NULL;
182 awayqueue = NULL; 178 awayqueue = NULL;
183 awayqueuesw = NULL; 179 awayqueuesw = NULL;
274 g_signal_connect(G_OBJECT(back), "clicked", G_CALLBACK(do_im_back), imaway); 270 g_signal_connect(G_OBJECT(back), "clicked", G_CALLBACK(do_im_back), imaway);
275 gtk_window_set_focus(GTK_WINDOW(imaway), back); 271 gtk_window_set_focus(GTK_WINDOW(imaway), back);
276 gtk_widget_show(back); 272 gtk_widget_show(back);
277 273
278 awaymessage = a; 274 awaymessage = a;
279
280 /* New away message... Clear out the old sent_aways */
281 while (away_time_queue) {
282 struct queued_away_response *qar = away_time_queue->data;
283 away_time_queue = g_slist_remove(away_time_queue, qar);
284 g_free(qar);
285 }
286 275
287 gtk_widget_show(imaway); 276 gtk_widget_show(imaway);
288 serv_set_away_all(awaymessage->message); 277 serv_set_away_all(awaymessage->message);
289 } 278 }
290 279