summaryrefslogtreecommitdiffstats
path: root/src/plugins/platformthemes/gtk3
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-01-08 12:30:57 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-01-08 12:35:24 +0100
commitad16478a76815f8f61d454bf7760aaf9ffbb4b51 (patch)
treeeefdd9219cc9d59b62e042f49fc7555b980cb7a4 /src/plugins/platformthemes/gtk3
parent80a741f3616290897ba0d9f1cbd3c9c5ee62da37 (diff)
parent09c92863001790a0304a5ef389901ee2b5b6cdc2 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Based on merge done by Liang Qi Change-Id: Id566e5b9f284d29bff2199f13f9417c660f5b26f
Diffstat (limited to 'src/plugins/platformthemes/gtk3')
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
index 2a3585464f..4af91ded27 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
@@ -71,6 +71,9 @@ Q_SIGNALS:
protected:
static void onResponse(QGtk3Dialog *dialog, int response);
+private slots:
+ void onParentWindowDestroyed();
+
private:
GtkWidget *gtkWidget;
};
@@ -108,6 +111,8 @@ void QGtk3Dialog::exec()
bool QGtk3Dialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent)
{
+ connect(parent, &QWindow::destroyed, this, &QGtk3Dialog::onParentWindowDestroyed,
+ Qt::UniqueConnection);
setParent(parent);
setFlags(flags);
setModality(modality);
@@ -146,6 +151,12 @@ void QGtk3Dialog::onResponse(QGtk3Dialog *dialog, int response)
emit dialog->reject();
}
+void QGtk3Dialog::onParentWindowDestroyed()
+{
+ // The QGtk3*DialogHelper classes own this object. Make sure the parent doesn't delete it.
+ setParent(0);
+}
+
QGtk3ColorDialogHelper::QGtk3ColorDialogHelper()
{
d.reset(new QGtk3Dialog(gtk_color_chooser_dialog_new("", 0)));