Mercurial > pidgin
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; |