[gnome-builder] project-tree: expand tree if only a single root item



commit f394cd5028b2c242aea7176d711e72f5ebbf0101
Author: Christian Hergert <christian hergert me>
Date:   Mon Apr 13 13:12:37 2015 -0700

    project-tree: expand tree if only a single root item
    
    This is the common case today, where we only have "Files" at the root of
    the tree.
    
    That will change in the future, but for now, just expand the item.

 src/project-tree/gb-project-tree.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/src/project-tree/gb-project-tree.c b/src/project-tree/gb-project-tree.c
index 9584225..b82d062 100644
--- a/src/project-tree/gb-project-tree.c
+++ b/src/project-tree/gb-project-tree.c
@@ -73,6 +73,7 @@ gb_project_tree_set_context (GbProjectTree *self,
 {
   GbTreeNode *root;
   IdeProject *project = NULL;
+  GtkTreeModel *model;
 
   g_return_if_fail (GB_IS_PROJECT_TREE (self));
   g_return_if_fail (!context || IDE_IS_CONTEXT (context));
@@ -84,6 +85,24 @@ gb_project_tree_set_context (GbProjectTree *self,
   gb_tree_node_set_item (root, G_OBJECT (project));
 
   gb_tree_rebuild (GB_TREE (self));
+
+  /*
+   * If we only have one item at the root of the tree, expand it.
+   */
+  if ((model = gtk_tree_view_get_model (GTK_TREE_VIEW (self))))
+    {
+      GtkTreeIter iter;
+
+      if ((gtk_tree_model_iter_n_children (model, NULL) == 1) &&
+          gtk_tree_model_get_iter_first (model, &iter))
+        {
+          g_autoptr(GbTreeNode) node = NULL;
+
+          gtk_tree_model_get (model, &iter, 0, &node, -1);
+          if (node != NULL)
+            gb_tree_node_expand (node, FALSE);
+        }
+    }
 }
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]