[PATCH 1/3] Close child windows and dialogs with main window

Lubomir I. Ivanov neolit123 at gmail.com
Fri Jun 28 05:20:42 PDT 2013


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

Most child windows should be closed with the main application
window otherwise if left open and if making specific
modifictions could potentially cause a SIGSEGV.

To solve that we mark all custom windows/dialogs with
the Qt::WA_QuitOnClose attribute on instance creation.

Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
resent due to conflicts in master.

---
 qt-ui/about.cpp                        | 1 +
 qt-ui/divecomputermanagementdialog.cpp | 1 +
 qt-ui/downloadfromdivecomputer.cpp     | 1 +
 qt-ui/mainwindow.cpp                   | 1 +
 qt-ui/preferences.cpp                  | 1 +
 qt-ui/subsurfacewebservices.cpp        | 1 +
 7 files changed, 7 insertions(+)

diff --git a/qt-ui/about.cpp b/qt-ui/about.cpp
index 18b54b9..1a96b62 100644
--- a/qt-ui/about.cpp
+++ b/qt-ui/about.cpp
@@ -9,6 +9,7 @@
 SubsurfaceAbout *SubsurfaceAbout::instance()
 {
 	static SubsurfaceAbout *self = new SubsurfaceAbout();
+	self->setAttribute(Qt::WA_QuitOnClose, false);
 	return self;
 }
 
diff --git a/qt-ui/divecomputermanagementdialog.cpp b/qt-ui/divecomputermanagementdialog.cpp
index 2a1bb8b..beb0ea4 100644
--- a/qt-ui/divecomputermanagementdialog.cpp
+++ b/qt-ui/divecomputermanagementdialog.cpp
@@ -26,6 +26,7 @@ void DiveComputerManagementDialog::init()
 DiveComputerManagementDialog* DiveComputerManagementDialog::instance()
 {
 	static DiveComputerManagementDialog *self = new DiveComputerManagementDialog();
+	self->setAttribute(Qt::WA_QuitOnClose, false);
 	return self;
 }
 
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index f3cd45c..ba079e6 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -37,6 +37,7 @@ namespace DownloadFromDcGlobal{
 DownloadFromDCWidget *DownloadFromDCWidget::instance()
 {
 	static DownloadFromDCWidget *dialog = new DownloadFromDCWidget();
+	dialog->setAttribute(Qt::WA_QuitOnClose, false);
 	return dialog;
 }
 
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 3f16b50..ddc993a 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -297,6 +297,7 @@ void MainWindow::on_actionYearlyStatistics_triggered()
 	view->setModel(model);
 	view->setWindowModality(Qt::NonModal);
 	view->setMinimumWidth(600);
+	view->setAttribute(Qt::WA_QuitOnClose, false);
 	view->show();
 }
 
diff --git a/qt-ui/preferences.cpp b/qt-ui/preferences.cpp
index 9a2eff8..19fa169 100644
--- a/qt-ui/preferences.cpp
+++ b/qt-ui/preferences.cpp
@@ -6,6 +6,7 @@
 PreferencesDialog* PreferencesDialog::instance()
 {
 	static PreferencesDialog *dialog = new PreferencesDialog();
+	dialog->setAttribute(Qt::WA_QuitOnClose, false);
 	return dialog;
 }
 
diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp
index cd944ca..76e730b 100644
--- a/qt-ui/subsurfacewebservices.cpp
+++ b/qt-ui/subsurfacewebservices.cpp
@@ -19,6 +19,7 @@ static gboolean merge_locations_into_dives(void);
 SubsurfaceWebServices* SubsurfaceWebServices::instance()
 {
 	static SubsurfaceWebServices *self = new SubsurfaceWebServices();
+	self->setAttribute(Qt::WA_QuitOnClose, false);
 	return self;
 }
 
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list