[gnome-builder] project-tree: re-expand tree to selected item after rebuild



commit 3a086f8e2fe34d5846064a1c34eb53201405377d
Author: Christian Hergert <christian hergert me>
Date:   Sat Apr 11 14:12:36 2015 -0700

    project-tree: re-expand tree to selected item after rebuild
    
    If we can discover the previously selected item after a tree rebuild, we
    should be nice and reselect it (expanding as necessary).

 src/project-tree/gb-project-tree-actions.c |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)
---
diff --git a/src/project-tree/gb-project-tree-actions.c b/src/project-tree/gb-project-tree-actions.c
index ef4decd..2f2ad2d 100644
--- a/src/project-tree/gb-project-tree-actions.c
+++ b/src/project-tree/gb-project-tree-actions.c
@@ -63,16 +63,31 @@ gb_project_tree_actions_refresh (GSimpleAction *action,
                                  gpointer       user_data)
 {
   GbProjectTree *self = user_data;
+  GbTreeNode *selected;
+  GObject *item = NULL;
 
   g_assert (GB_IS_PROJECT_TREE (self));
 
+  if ((selected = gb_tree_get_selected (GB_TREE (self))))
+    {
+      item = gb_tree_node_get_item (selected);
+      if (item != NULL)
+        g_object_ref (item);
+    }
+
   gb_tree_rebuild (GB_TREE (self));
 
-  /*
-   * TODO:
-   *
-   * Try to expand back to our current position
-   */
+  if (item != NULL)
+    {
+      selected = gb_tree_find_item (GB_TREE (self), item);
+      if (selected != NULL)
+        {
+          gb_tree_node_expand (selected, TRUE);
+          gb_tree_node_select (selected);
+          gb_tree_scroll_to_node (GB_TREE (self), selected);
+        }
+      g_object_unref (item);
+    }
 }
 
 static void


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