pidgin/gtklog.c

branch
soc.2007.finchfeat
changeset 19307
0027732ddb26
parent 18743
58a367fa661a
child 18868
bad2f3f3d15a
child 19291
44d144feda7b
child 19859
71d37b57eff2
--- a/pidgin/gtklog.c	Thu Jul 19 10:35:11 2007 +0000
+++ b/pidgin/gtklog.c	Sun Jul 22 01:28:19 2007 +0000
@@ -172,7 +172,32 @@
 
 #ifdef _WIN32
 	if (resp == GTK_RESPONSE_HELP) {
-		char *logdir = g_build_filename(purple_user_dir(), "logs", NULL);
+		GtkTreeSelection *sel;
+		GtkTreeIter iter;
+		GtkTreeModel *model;
+		PurpleLog *log = NULL;
+		char *logdir;
+
+		if (ht != NULL)
+			lv = g_hash_table_lookup(log_viewers, ht);
+		model = GTK_TREE_MODEL(lv->treestore);
+
+		sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview));
+		if (gtk_tree_selection_get_selected(sel, &model, &iter)) {
+			GValue val;
+
+			val.g_type = 0;
+			gtk_tree_model_get_value (model, &iter, 1, &val);
+			log = g_value_get_pointer(&val);
+			g_value_unset(&val);
+		}
+
+
+		if (log == NULL)
+			logdir = g_build_filename(purple_user_dir(), "logs", NULL);
+		else
+			logdir = purple_log_get_log_dir(log->type, log->name, log->account);
+
 		winpidgin_shell_execute(logdir, "explore", NULL);
 		g_free(logdir);
 		return;
@@ -368,7 +393,7 @@
 	gpointer *data;
 
 	iter = g_new(GtkTreeIter, 1);
-	sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv));
+	sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview));
 	if (!gtk_tree_selection_get_selected(sel, NULL, iter))
 	{
 		return FALSE;

mercurial