comparison src/gtklog.c @ 7454:50f4386a8262

[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 <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Fri, 07 Nov 2003 03:27:45 +0000
parents 8c0527c91a92
children 8126e7a422b0
comparison
equal deleted inserted replaced
7453:6f5918e4f668 7454:50f4386a8262
59 !strcmp(normal, gaim_normalize(b->account, b->screenname)); 59 !strcmp(normal, gaim_normalize(b->account, b->screenname));
60 g_free(normal); 60 g_free(normal);
61 return ret; 61 return ret;
62 } 62 }
63 63
64 static void log_select(GtkTreeSelection *sel, GaimGtkLogViewer *viewer) { 64 static gboolean destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) {
65 GaimGtkLogViewer *lv = g_hash_table_lookup(log_viewers, ht);
66
67 g_hash_table_remove(log_viewers, ht);
68 g_free(ht->screenname);
69 g_free(ht);
70 g_free(lv);
71 gtk_widget_destroy(w);
72
73 return TRUE;
74 }
75
76 static void log_select_cb(GtkTreeSelection *sel, GaimGtkLogViewer *viewer) {
65 GtkTreeIter iter; 77 GtkTreeIter iter;
66 GValue val = { 0, }; 78 GValue val = { 0, };
67 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore); 79 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore);
68 GaimLog *log = NULL; 80 GaimLog *log = NULL;
69 GaimLogReadFlags flags; 81 GaimLogReadFlags flags;
149 lv->window = gtk_dialog_new_with_buttons(screenname, NULL, 0, 161 lv->window = gtk_dialog_new_with_buttons(screenname, NULL, 0,
150 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); 162 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
151 gtk_container_set_border_width (GTK_CONTAINER(lv->window), 6); 163 gtk_container_set_border_width (GTK_CONTAINER(lv->window), 6);
152 gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE); 164 gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE);
153 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(lv->window)->vbox), 0); 165 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(lv->window)->vbox), 0);
154 166 g_signal_connect(G_OBJECT(lv->window), "response",
167 G_CALLBACK(destroy_cb), ht);
168
155 hbox = gtk_hbox_new(FALSE, 6); 169 hbox = gtk_hbox_new(FALSE, 6);
156 gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); 170 gtk_container_set_border_width(GTK_CONTAINER(hbox), 6);
157 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), hbox, FALSE, FALSE, 0); 171 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), hbox, FALSE, FALSE, 0);
158 172
159 /* Icon *************/ 173 /* Icon *************/
193 gtk_widget_set_size_request(lv->treeview, 170, 200); 207 gtk_widget_set_size_request(lv->treeview, 170, 200);
194 populate_log_tree(lv); 208 populate_log_tree(lv);
195 209
196 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview)); 210 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview));
197 g_signal_connect (G_OBJECT (sel), "changed", 211 g_signal_connect (G_OBJECT (sel), "changed",
198 G_CALLBACK (log_select), 212 G_CALLBACK (log_select_cb),
199 lv); 213 lv);
200 214
201 /* Viewer ************/ 215 /* Viewer ************/
202 vbox = gtk_vbox_new(FALSE, 6); 216 vbox = gtk_vbox_new(FALSE, 6);
203 gtk_paned_add2(GTK_PANED(pane), vbox); 217 gtk_paned_add2(GTK_PANED(pane), vbox);