comparison src/gtkplugin.c @ 11770:d353f31d17a9

[gaim-migrate @ 14061] Only one prefs dialog per plugin committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Sun, 23 Oct 2005 22:59:47 +0000
parents 5d1dd575d0f4
children 08b1dd8aa11c
comparison
equal deleted inserted replaced
11769:d56778d594d9 11770:d353f31d17a9
216 g_free(pdesc); 216 g_free(pdesc);
217 g_free(pauth); 217 g_free(pauth);
218 g_free(pweb); 218 g_free(pweb);
219 } 219 }
220 220
221 static void pref_dialog_response_cb(GtkWidget *d, int response, void *null) 221 static GSList *plugin_pref_dialogs = NULL;
222 static void pref_dialog_response_cb(GtkWidget *d, int response, GaimPlugin *plug)
222 { 223 {
223 switch (response) { 224 switch (response) {
224 case GTK_RESPONSE_CLOSE: 225 case GTK_RESPONSE_CLOSE:
225 case GTK_RESPONSE_DELETE_EVENT: 226 case GTK_RESPONSE_DELETE_EVENT:
227 plugin_pref_dialogs = g_slist_remove(plugin_pref_dialogs, plug);
226 gtk_widget_destroy(d); 228 gtk_widget_destroy(d);
227 break; 229 break;
228 } 230 }
229 } 231 }
230 static void plugin_dialog_response_cb(GtkWidget *d, int response, GtkTreeSelection *sel) 232 static void plugin_dialog_response_cb(GtkWidget *d, int response, GtkTreeSelection *sel)
246 return; 248 return;
247 gtk_tree_model_get_value (model, &iter, 2, &val); 249 gtk_tree_model_get_value (model, &iter, 2, &val);
248 plug = g_value_get_pointer(&val); 250 plug = g_value_get_pointer(&val);
249 if (plug == NULL) 251 if (plug == NULL)
250 break; 252 break;
253 if (g_slist_find(plugin_pref_dialogs, plug))
254 break;
255 plugin_pref_dialogs = g_slist_prepend(plugin_pref_dialogs, plug);
251 box = gaim_gtk_plugin_get_config_frame(plug); 256 box = gaim_gtk_plugin_get_config_frame(plug);
252 if (box == NULL) 257 if (box == NULL)
253 break; 258 break;
254 259
255 dialog = gtk_dialog_new_with_buttons(GAIM_ALERT_TITLE, GTK_WINDOW(d), 260 dialog = gtk_dialog_new_with_buttons(GAIM_ALERT_TITLE, GTK_WINDOW(d),
256 GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT, 261 GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT,
257 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, 262 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
258 NULL); 263 NULL);
259 g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(pref_dialog_response_cb), NULL); 264 g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(pref_dialog_response_cb), plug);
260 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), box); 265 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), box);
261 gtk_window_set_role(GTK_WINDOW(dialog), "plugin_config"); 266 gtk_window_set_role(GTK_WINDOW(dialog), "plugin_config");
262 gtk_widget_show_all(dialog); 267 gtk_widget_show_all(dialog);
268 g_value_unset(&val);
263 break; 269 break;
264 } 270 }
265 } 271 }
266 272
267 void gaim_gtk_plugin_dialog_show() 273 void gaim_gtk_plugin_dialog_show()