comparison plugins/ticker/ticker.c @ 5172:2d84fe476406

[gaim-migrate @ 5536] crashing == bad committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Fri, 18 Apr 2003 23:01:00 +0000
parents 13ffa9ae4282
children 82b3d72d2128
comparison
equal deleted inserted replaced
5171:173ff9946424 5172:2d84fe476406
52 GList *tickerbuds = NULL; 52 GList *tickerbuds = NULL;
53 53
54 /* for win32 compatability */ 54 /* for win32 compatability */
55 G_MODULE_IMPORT GSList *connections; 55 G_MODULE_IMPORT GSList *connections;
56 56
57 static void buddy_ticker_destroy_window(GtkWidget *window, gpointer data) { 57 static gboolean buddy_ticker_destroy_window(GtkWidget *window,
58 gtk_widget_hide(window); 58 GdkEventAny *event, gpointer data) {
59 if(window)
60 gtk_widget_hide(window);
61
62 return TRUE; /* don't actually destroy the window */
59 } 63 }
60 64
61 static void buddy_ticker_create_window() { 65 static void buddy_ticker_create_window() {
62 if(tickerwindow) { 66 if(tickerwindow) {
63 gtk_widget_show(tickerwindow); 67 gtk_widget_show(tickerwindow);
64 return; 68 return;
65 } 69 }
66 70
67 tickerwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); 71 tickerwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
68 g_signal_connect(G_OBJECT(tickerwindow), "destroy", 72 g_signal_connect(G_OBJECT(tickerwindow), "delete_event",
69 G_CALLBACK (buddy_ticker_destroy_window), NULL); 73 G_CALLBACK (buddy_ticker_destroy_window), NULL);
70 gtk_window_set_title (GTK_WINDOW(tickerwindow), _("Buddy Ticker")); 74 gtk_window_set_title (GTK_WINDOW(tickerwindow), _("Buddy Ticker"));
71 gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker"); 75 gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker");
72 76
73 ticker = gtk_ticker_new(); 77 ticker = gtk_ticker_new();
116 static void buddy_ticker_add_buddy(struct buddy *b) { 120 static void buddy_ticker_add_buddy(struct buddy *b) {
117 GtkWidget *hbox; 121 GtkWidget *hbox;
118 TickerData *td; 122 TickerData *td;
119 123
120 buddy_ticker_create_window(); 124 buddy_ticker_create_window();
125
121 if (!ticker) 126 if (!ticker)
122 return; 127 return;
123 128
124 if(buddy_ticker_find_buddy(b)) 129 if(buddy_ticker_find_buddy(b))
125 return; 130 return;
148 static void buddy_ticker_remove_buddy(struct buddy *b) { 153 static void buddy_ticker_remove_buddy(struct buddy *b) {
149 TickerData *td = buddy_ticker_find_buddy(b); 154 TickerData *td = buddy_ticker_find_buddy(b);
150 155
151 if (!td) 156 if (!td)
152 return; 157 return;
158
159 /* pop up the ticker window again */
160 buddy_ticker_create_window();
153 161
154 gtk_ticker_remove(GTK_TICKER(ticker), td->ebox); 162 gtk_ticker_remove(GTK_TICKER(ticker), td->ebox);
155 tickerbuds = g_list_remove(tickerbuds, td); 163 tickerbuds = g_list_remove(tickerbuds, td);
156 g_free(td); 164 g_free(td);
157 } 165 }
233 buddy_ticker_show(); 241 buddy_ticker_show();
234 return NULL; 242 return NULL;
235 } 243 }
236 244
237 G_MODULE_EXPORT void gaim_plugin_remove() { 245 G_MODULE_EXPORT void gaim_plugin_remove() {
238 buddy_ticker_destroy_window(tickerwindow, NULL); 246 buddy_ticker_destroy_window(tickerwindow, NULL, NULL);
239 } 247 }
240 248
241 struct gaim_plugin_description desc; 249 struct gaim_plugin_description desc;
242 G_MODULE_EXPORT struct gaim_plugin_description *gaim_plugin_desc() { 250 G_MODULE_EXPORT struct gaim_plugin_description *gaim_plugin_desc() {
243 desc.api_version = PLUGIN_API_VERSION; 251 desc.api_version = PLUGIN_API_VERSION;