summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/tree/nautilus-tree-view.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/components/tree/nautilus-tree-view.c b/components/tree/nautilus-tree-view.c
index b570bf7fd..228f24ae0 100644
--- a/components/tree/nautilus-tree-view.c
+++ b/components/tree/nautilus-tree-view.c
@@ -328,13 +328,26 @@ cancel_activation (NautilusTreeView *view)
}
static void
+row_activated_callback (GtkTreeView *treeview, GtkTreePath *path,
+ GtkTreeViewColumn *column, NautilusTreeView *view)
+{
+ if (gtk_tree_view_row_expanded (view->details->tree_widget, path)) {
+ gtk_tree_view_collapse_row (view->details->tree_widget, path);
+ } else {
+ gtk_tree_view_expand_row (view->details->tree_widget,
+ path, FALSE);
+ }
+}
+
+
+static void
selection_changed_callback (GtkTreeSelection *selection,
NautilusTreeView *view)
{
NautilusFileAttributes attributes;
GtkTreeIter iter;
- cancel_activation (view);
+ cancel_activation (view);
if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {
return;
@@ -594,6 +607,10 @@ create_tree (NautilusTreeView *view)
g_signal_connect_object (gtk_tree_view_get_selection (GTK_TREE_VIEW (view->details->tree_widget)), "changed",
G_CALLBACK (selection_changed_callback), view, 0);
+ g_signal_connect (G_OBJECT (view->details->tree_widget),
+ "row-activated", G_CALLBACK (row_activated_callback),
+ view);
+
schedule_show_selection (view);
}