comparison src/dialogs.c @ 7055:2234420abada

[gaim-migrate @ 7618] Um, I think this should maybe almost fix wing's possible problem with the url insert link maybe thing like. It seemed like destroy_dialog() was getting called 3 times or something. I dunno, I'm tired. Anyway, it doesn't seem to crash or leak for me, hopefully wing's problem is fixed. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Tue, 30 Sep 2003 05:40:09 +0000
parents 167a92baeae6
children 3c7c887c35c3
comparison
equal deleted inserted replaced
7054:7c04a0775918 7055:2234420abada
2207 /*------------------------------------------------------*/ 2207 /*------------------------------------------------------*/
2208 2208
2209 void cancel_link(GtkWidget *widget, GaimConversation *c) 2209 void cancel_link(GtkWidget *widget, GaimConversation *c)
2210 { 2210 {
2211 GaimGtkConversation *gtkconv; 2211 GaimGtkConversation *gtkconv;
2212 GtkWidget *link_dialog;
2212 2213
2213 gtkconv = GAIM_GTK_CONVERSATION(c); 2214 gtkconv = GAIM_GTK_CONVERSATION(c);
2214 2215
2215 if (gtkconv->toolbar.link) { 2216 if (gtkconv->toolbar.link) {
2216 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link), 2217 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link),
2217 FALSE); 2218 FALSE);
2218 } 2219 }
2219 2220
2220 destroy_dialog(NULL, gtkconv->dialogs.link); 2221 link_dialog = gtkconv->dialogs.link;
2221 gtkconv->dialogs.link = NULL; 2222 gtkconv->dialogs.link = NULL;
2223 destroy_dialog(NULL, link_dialog);
2222 } 2224 }
2223 2225
2224 void do_insert_link(GtkWidget *w, int resp, struct linkdlg *b) 2226 void do_insert_link(GtkWidget *w, int resp, struct linkdlg *b)
2225 { 2227 {
2226 GaimGtkConversation *gtkconv; 2228 GaimGtkConversation *gtkconv;
2272 2274
2273 a->c = c; 2275 a->c = c;
2274 a->window = gtk_dialog_new_with_buttons(_("Insert Link"), 2276 a->window = gtk_dialog_new_with_buttons(_("Insert Link"),
2275 GTK_WINDOW(gtkwin->window), 0, GTK_STOCK_CANCEL, 2277 GTK_WINDOW(gtkwin->window), 0, GTK_STOCK_CANCEL,
2276 GTK_RESPONSE_CANCEL, _("Insert"), GTK_RESPONSE_OK, NULL); 2278 GTK_RESPONSE_CANCEL, _("Insert"), GTK_RESPONSE_OK, NULL);
2279 gtk_dialog_set_default_response(GTK_DIALOG(a->window), GTK_RESPONSE_OK);
2280 g_signal_connect(G_OBJECT(a->window), "response",
2281 G_CALLBACK(do_insert_link), a);
2277 2282
2278 gtk_dialog_set_default_response(GTK_DIALOG(a->window), GTK_RESPONSE_OK); 2283 gtk_dialog_set_default_response(GTK_DIALOG(a->window), GTK_RESPONSE_OK);
2279 gtk_container_set_border_width(GTK_CONTAINER(a->window), 6); 2284 gtk_container_set_border_width(GTK_CONTAINER(a->window), 6);
2280 gtk_window_set_resizable(GTK_WINDOW(a->window), FALSE); 2285 gtk_window_set_resizable(GTK_WINDOW(a->window), FALSE);
2281 gtk_dialog_set_has_separator(GTK_DIALOG(a->window), FALSE); 2286 gtk_dialog_set_has_separator(GTK_DIALOG(a->window), FALSE);
2302 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); 2307 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
2303 2308
2304 hbox = gtk_hbox_new(FALSE, 6); 2309 hbox = gtk_hbox_new(FALSE, 6);
2305 gtk_container_add(GTK_CONTAINER(vbox), hbox); 2310 gtk_container_add(GTK_CONTAINER(vbox), hbox);
2306 2311
2307 g_signal_connect(G_OBJECT(a->window), "destroy",
2308 G_CALLBACK(destroy_dialog), a->window);
2309 g_signal_connect(G_OBJECT(a->window), "destroy",
2310 G_CALLBACK(free_dialog), a);
2311 dialogwindows = g_list_prepend(dialogwindows, a->window);
2312
2313 table = gtk_table_new(4, 2, FALSE); 2312 table = gtk_table_new(4, 2, FALSE);
2314 gtk_table_set_row_spacings(GTK_TABLE(table), 5); 2313 gtk_table_set_row_spacings(GTK_TABLE(table), 5);
2315 gtk_table_set_col_spacings(GTK_TABLE(table), 5); 2314 gtk_table_set_col_spacings(GTK_TABLE(table), 5);
2316 gtk_container_set_border_width(GTK_CONTAINER(table), 0); 2315 gtk_container_set_border_width(GTK_CONTAINER(table), 0);
2317 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); 2316 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
2332 2331
2333 a->text = gtk_entry_new(); 2332 a->text = gtk_entry_new();
2334 gtk_table_attach_defaults(GTK_TABLE(table), a->text, 1, 2, 1, 2); 2333 gtk_table_attach_defaults(GTK_TABLE(table), a->text, 1, 2, 1, 2);
2335 gtk_entry_set_activates_default (GTK_ENTRY(a->text), TRUE); 2334 gtk_entry_set_activates_default (GTK_ENTRY(a->text), TRUE);
2336 2335
2337 g_signal_connect(G_OBJECT(a->window), "response", 2336 g_signal_connect(G_OBJECT(a->window), "destroy",
2338 G_CALLBACK(do_insert_link), a); 2337 G_CALLBACK(free_dialog), a);
2338 dialogwindows = g_list_prepend(dialogwindows, a->window);
2339 2339
2340 a->toggle = linky; 2340 a->toggle = linky;
2341 gtkconv->dialogs.link = a->window; 2341 gtkconv->dialogs.link = a->window;
2342 } 2342 }
2343 2343