[gnome-builder] workbench: avoid creating temporary file with command line params



commit 22b658ad555b900ffffd312a75180fa784280d24
Author: Christian Hergert <christian hergert me>
Date:   Sat Apr 25 01:08:28 2015 -0700

    workbench: avoid creating temporary file with command line params
    
    There is a case we restored nothing, and the command line files have been
    requested to be opened, but no buffers have yet been created.
    
    We don't want to open a temporary buffer in that case.

 src/workbench/gb-workbench-private.h |    2 ++
 src/workbench/gb-workbench.c         |   14 ++++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/src/workbench/gb-workbench-private.h b/src/workbench/gb-workbench-private.h
index e05138c..3d99018 100644
--- a/src/workbench/gb-workbench-private.h
+++ b/src/workbench/gb-workbench-private.h
@@ -54,8 +54,10 @@ struct _GbWorkbench
   gulong                  project_notify_name_handler;
 
   guint                   disposing;
+
   guint                   building : 1;
   guint                   unloading : 1;
+  guint                   has_opened : 1;
 };
 
 G_END_DECLS
diff --git a/src/workbench/gb-workbench.c b/src/workbench/gb-workbench.c
index 53a5a5a..fe6d735 100644
--- a/src/workbench/gb-workbench.c
+++ b/src/workbench/gb-workbench.c
@@ -97,7 +97,7 @@ gb_workbench__context_restore_cb (GObject      *object,
     }
 
   buffer_manager = ide_context_get_buffer_manager (context);
-  if (ide_buffer_manager_get_n_buffers (buffer_manager) == 0)
+  if ((ide_buffer_manager_get_n_buffers (buffer_manager) == 0) && (self->has_opened == FALSE))
     gb_workbench_add_temporary_buffer (self);
 
   gtk_widget_grab_focus (GTK_WIDGET (self->editor_workspace));
@@ -121,11 +121,6 @@ gb_workbench_connect_context (GbWorkbench *self,
                              self,
                              G_CONNECT_SWAPPED);
   gb_workbench__project_notify_name_cb (self, NULL, project);
-
-  ide_context_restore_async (context,
-                             NULL,
-                             gb_workbench__context_restore_cb,
-                             g_object_ref (self));
 }
 
 static void
@@ -301,6 +296,11 @@ gb_workbench_realize (GtkWidget *widget)
     GTK_WIDGET_CLASS (gb_workbench_parent_class)->realize (widget);
 
   gtk_widget_grab_focus (GTK_WIDGET (self->editor_workspace));
+
+  ide_context_restore_async (self->context,
+                             NULL,
+                             gb_workbench__context_restore_cb,
+                             g_object_ref (self));
 }
 
 static void
@@ -680,6 +680,8 @@ gb_workbench_open (GbWorkbench *self,
   g_return_if_fail (self->unloading == FALSE);
   g_return_if_fail (self->context);
 
+  self->has_opened = TRUE;
+
   /*
    * TODO: We probably want to dispatch this based on the type. But for now,
    *       we will just try to open it with the buffer manager.


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