# HG changeset patch # User Mark Doliner # Date 1068175665 0 # Node ID 50f4386a82626bba25d4de7261b18e982fbe562c # Parent 6f5918e4f668d7ab8d03b96fe971abffff307175 [gaim-migrate @ 8067] I made the log viewer's close button worked, also fixing a memleak when using the x to close the window. I feel wheat. committer: Tailor Script diff -r 6f5918e4f668 -r 50f4386a8262 src/gtklog.c --- a/src/gtklog.c Fri Nov 07 02:27:24 2003 +0000 +++ b/src/gtklog.c Fri Nov 07 03:27:45 2003 +0000 @@ -61,7 +61,19 @@ return ret; } -static void log_select(GtkTreeSelection *sel, GaimGtkLogViewer *viewer) { +static gboolean destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) { + GaimGtkLogViewer *lv = g_hash_table_lookup(log_viewers, ht); + + g_hash_table_remove(log_viewers, ht); + g_free(ht->screenname); + g_free(ht); + g_free(lv); + gtk_widget_destroy(w); + + return TRUE; +} + +static void log_select_cb(GtkTreeSelection *sel, GaimGtkLogViewer *viewer) { GtkTreeIter iter; GValue val = { 0, }; GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore); @@ -151,7 +163,9 @@ gtk_container_set_border_width (GTK_CONTAINER(lv->window), 6); gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE); gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(lv->window)->vbox), 0); - + g_signal_connect(G_OBJECT(lv->window), "response", + G_CALLBACK(destroy_cb), ht); + hbox = gtk_hbox_new(FALSE, 6); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), hbox, FALSE, FALSE, 0); @@ -195,7 +209,7 @@ sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview)); g_signal_connect (G_OBJECT (sel), "changed", - G_CALLBACK (log_select), + G_CALLBACK (log_select_cb), lv); /* Viewer ************/