[gnome-builder] project-tree: allow creation of siblings



commit 59b6e854c0ad4721c3adc1b9ee7622f4f1ef3d51
Author: Christian Hergert <christian hergert me>
Date:   Fri Apr 10 18:58:22 2015 -0700

    project-tree: allow creation of siblings
    
    This allows us to create a sibling, both directories and files.

 src/project-tree/gb-project-tree-actions.c |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/src/project-tree/gb-project-tree-actions.c b/src/project-tree/gb-project-tree-actions.c
index 86fec84..cefa3f8 100644
--- a/src/project-tree/gb-project-tree-actions.c
+++ b/src/project-tree/gb-project-tree-actions.c
@@ -327,6 +327,7 @@ static void
 gb_project_tree_actions_new (GbProjectTree *self,
                              GFileType      file_type)
 {
+  g_autoptr(GFile) parent = NULL;
   GbTreeNode *selected;
   GObject *item;
   GtkPopover *popover;
@@ -341,11 +342,20 @@ gb_project_tree_actions_new (GbProjectTree *self,
   if (!(selected = gb_tree_get_selected (GB_TREE (self))) ||
       !(item = gb_tree_node_get_item (selected)) ||
       !IDE_IS_PROJECT_FILE (item) ||
-      !project_file_is_directory (item) ||
       !(project_file = IDE_PROJECT_FILE (item)) ||
       !(file = ide_project_file_get_file (project_file)))
     return;
 
+  /*
+   * If this item is an IdeProjectFile and not a directory, then we really
+   * want to create a sibling.
+   */
+  if (!project_file_is_directory (item))
+    {
+      parent = g_file_get_parent (file);
+      file = parent;
+    }
+
   if ((self->expanded_in_new = !gb_tree_node_get_expanded (selected)))
     gb_tree_node_expand (selected, FALSE);
 
@@ -457,10 +467,10 @@ gb_project_tree_actions_update (GbProjectTree *self)
     item = gb_tree_node_get_item (selection);
 
   action_set (group, "new-file",
-              "enabled", project_file_is_directory (item),
+              "enabled", IDE_IS_PROJECT_FILE (item),
               NULL);
   action_set (group, "new-directory",
-              "enabled", project_file_is_directory (item),
+              "enabled", IDE_IS_PROJECT_FILE (item),
               NULL);
   action_set (group, "open",
               "enabled", !project_file_is_directory (item),


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