[gimp] app: remove all docks from GimpImageWindow in dispose()



commit b3c8cbd5a53516994fe0e661f092fff6902edc97
Author: Michael Natterer <mitch gimp org>
Date:   Mon Feb 13 00:11:23 2012 +0100

    app: remove all docks from GimpImageWindow in dispose()
    
    Seems to fix irregularly occuring warnings on exit about dialogs
    being still around.

 app/display/gimpimagewindow.c |   33 +++++++++++++++++++++++++++------
 1 files changed, 27 insertions(+), 6 deletions(-)
---
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index 555f7d6..eece01e 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -426,6 +426,21 @@ gimp_image_window_constructed (GObject *object)
 }
 
 static void
+gimp_image_window_clear_docks (GimpDockColumns *columns)
+{
+  GList *docks;
+
+  do
+    {
+      docks = gimp_dock_columns_get_docks (columns);
+
+      if (docks)
+        gimp_dock_columns_remove_dock (columns, docks->data);
+    }
+  while (docks);
+}
+
+static void
 gimp_image_window_dispose (GObject *object)
 {
   GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (object);
@@ -444,6 +459,18 @@ gimp_image_window_dispose (GObject *object)
       private->menubar_manager = NULL;
     }
 
+  if (private->left_docks)
+    {
+      gimp_image_window_clear_docks (GIMP_DOCK_COLUMNS (private->left_docks));
+      private->left_docks = NULL;
+    }
+
+  if (private->right_docks)
+    {
+      gimp_image_window_clear_docks (GIMP_DOCK_COLUMNS (private->right_docks));
+      private->right_docks = NULL;
+    }
+
   G_OBJECT_CLASS (parent_class)->dispose (object);
 }
 
@@ -452,12 +479,6 @@ gimp_image_window_finalize (GObject *object)
 {
   GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (object);
 
-  if (private->menubar_manager)
-    {
-      g_object_unref (private->menubar_manager);
-      private->menubar_manager = NULL;
-    }
-
   if (private->shells)
     {
       g_list_free (private->shells);



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