changeset 29758:1511b7cd3474

only close dock widgets when main window does not exist (bug #60646) * octave-qobject.cc (base_qobject::~base_qobject): onyl close widgets if main window does not exist, use delete instead of deleteLater
author Torsten Lilge <ttl-octave@mailbox.org>
date Mon, 14 Jun 2021 22:00:52 +0200
parents f8322ca49578
children ad1491462d13
files libgui/src/octave-qobject.cc
diffstat 1 files changed, 27 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/octave-qobject.cc	Mon Jun 14 14:16:39 2021 -0400
+++ b/libgui/src/octave-qobject.cc	Mon Jun 14 22:00:52 2021 +0200
@@ -310,45 +310,41 @@
     // configuration not saved correctly if the main window is deleted
     // after the dock widgets?
 
-    delete m_main_window;
 
     // Calling close will cause settings to be saved.
+    // If m_main_window exists, the widgets are closed by the main window
 
-    if (m_documentation_widget)
+    if (! m_main_window)
       {
-        m_documentation_widget->close ();
-        m_documentation_widget->deleteLater ();
+        if (m_documentation_widget)
+          m_documentation_widget->close ();
+
+        if (m_file_browser_widget)
+          m_file_browser_widget->close ();
+
+        if (m_history_widget)
+          m_history_widget->close ();
+
+        if (m_workspace_widget)
+          m_workspace_widget->close ();
+
+        if (m_editor_widget)
+          m_editor_widget->close ();
+
+        if (m_variable_editor_widget)
+          m_variable_editor_widget->close ();
       }
-
-    if (m_file_browser_widget)
+    else
       {
-        m_file_browser_widget->close ();
-        m_file_browser_widget->deleteLater ();
+        delete m_main_window;
       }
 
-    if (m_history_widget)
-      {
-        m_history_widget->close ();
-        m_history_widget->deleteLater ();
-      }
-
-    if (m_workspace_widget)
-      {
-        m_workspace_widget->close ();
-        m_workspace_widget->deleteLater ();
-      }
-
-    if (m_editor_widget)
-      {
-        m_editor_widget->close ();
-        m_editor_widget->deleteLater ();
-      }
-
-    if (m_variable_editor_widget)
-      {
-        m_variable_editor_widget->close ();
-        m_variable_editor_widget->deleteLater ();
-      }
+    delete m_documentation_widget;
+    delete m_file_browser_widget;
+    delete m_history_widget;
+    delete m_workspace_widget;
+    delete m_editor_widget;
+    delete m_variable_editor_widget;
 
     delete m_interpreter_qobj;
     delete m_qsci_tr;