[gnome-builder] workbench: query perspectives before closing



commit 285647147f4be6867c96a0910fcb999f27629efc
Author: Christian Hergert <chergert redhat com>
Date:   Sat Dec 5 01:52:41 2015 -0800

    workbench: query perspectives before closing

 libide/ide-workbench.c |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-workbench.c b/libide/ide-workbench.c
index f42e095..43a389b 100644
--- a/libide/ide-workbench.c
+++ b/libide/ide-workbench.c
@@ -129,6 +129,33 @@ ide_workbench_unload_cb (GObject      *object,
 }
 
 static gboolean
+ide_workbench_agree_to_shutdown (IdeWorkbench *self)
+{
+  GList *children;
+  const GList *iter;
+  gboolean ret = TRUE;
+
+  g_assert (IDE_IS_WORKBENCH (self));
+
+  children = gtk_container_get_children (GTK_CONTAINER (self->perspectives_stack));
+
+  for (iter = children; iter; iter = iter->next)
+    {
+      IdePerspective *perspective = iter->data;
+
+      if (!ide_perspective_agree_to_shutdown (perspective))
+        {
+          ret = FALSE;
+          break;
+        }
+    }
+
+  g_list_free (children);
+
+  return ret;
+}
+
+static gboolean
 ide_workbench_delete_event (GtkWidget   *widget,
                             GdkEventAny *event)
 {
@@ -143,6 +170,9 @@ ide_workbench_delete_event (GtkWidget   *widget,
       return GDK_EVENT_STOP;
     }
 
+  if (!ide_workbench_agree_to_shutdown (self))
+    return GDK_EVENT_STOP;
+
   self->unloading = TRUE;
 
   g_signal_emit (self, signals [UNLOAD], 0, self->context);


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