[gnome-builder] project-tree: show project tree when closing last view



commit 29a3fe4ed5f60b05a31077d6cfe30e4f9d34e629
Author: Christian Hergert <chergert redhat com>
Date:   Sun Feb 28 18:17:54 2016 -0800

    project-tree: show project tree when closing last view
    
    https://bugzilla.gnome.org/show_bug.cgi?id=762846

 plugins/project-tree/gb-project-tree-addin.c |   35 ++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)
---
diff --git a/plugins/project-tree/gb-project-tree-addin.c b/plugins/project-tree/gb-project-tree-addin.c
index 0f06831..359a6dd 100644
--- a/plugins/project-tree/gb-project-tree-addin.c
+++ b/plugins/project-tree/gb-project-tree-addin.c
@@ -47,13 +47,36 @@ gb_project_tree_addin_context_set (GtkWidget  *widget,
 }
 
 static void
+gb_project_tree_addin_grid_empty (GbProjectTreeAddin *self,
+                                  IdeLayoutGrid      *grid)
+{
+  GtkWidget *layout;
+  GtkWidget *pane;
+
+  g_assert (GB_IS_PROJECT_TREE_ADDIN (self));
+  g_assert (IDE_IS_LAYOUT_GRID (grid));
+
+  layout = gtk_widget_get_ancestor (GTK_WIDGET (grid), IDE_TYPE_LAYOUT);
+  g_assert (layout != NULL);
+
+  pane = ide_layout_get_left_pane (IDE_LAYOUT (layout));
+  g_assert (pane != NULL);
+
+  gtk_container_child_set (GTK_CONTAINER (layout), GTK_WIDGET (pane),
+                           "reveal", TRUE,
+                           NULL);
+}
+
+static void
 gb_project_tree_addin_load (IdeWorkbenchAddin *addin,
                             IdeWorkbench      *workbench)
 {
   GbProjectTreeAddin *self = (GbProjectTreeAddin *)addin;
   IdePerspective *editor;
   GtkWidget *pane;
+  GtkWidget *content;
   GtkWidget *scroller;
+  GtkWidget *grid;
 
   g_assert (IDE_IS_WORKBENCH_ADDIN (self));
   g_assert (IDE_IS_WORKBENCH (workbench));
@@ -64,6 +87,18 @@ gb_project_tree_addin_load (IdeWorkbenchAddin *addin,
   pane = ide_layout_get_left_pane (IDE_LAYOUT (editor));
   g_assert (pane != NULL);
 
+  content = ide_layout_get_content_pane (IDE_LAYOUT (editor));
+  g_assert (content != NULL);
+
+  grid = ide_widget_find_child_typed (content, IDE_TYPE_LAYOUT_GRID);
+  g_assert (grid != NULL);
+
+  g_signal_connect_object (grid,
+                           "empty",
+                           G_CALLBACK (gb_project_tree_addin_grid_empty),
+                           self,
+                           G_CONNECT_SWAPPED);
+
   scroller = g_object_new (GTK_TYPE_SCROLLED_WINDOW,
                            "visible", TRUE,
                            NULL);


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