From e5e371291ace1ae0a833d2be3aee42d3e8716c7e Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Tue, 30 Nov 2021 14:22:54 +0100 Subject: [PATCH] Disconnect upon construction Since we connect to "this" via PMF syntax, we need to disconnect while QQuickDialog is not partially destroyed. Pick-to: 6.2 Change-Id: Ia8797dd7b12bf9ce796b17fc0420273191e262cd Reviewed-by: Fabian Kosmale --- src/quicktemplates2/qquickdialog.cpp | 12 ++++++++++++ src/quicktemplates2/qquickdialog_p.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/quicktemplates2/qquickdialog.cpp b/src/quicktemplates2/qquickdialog.cpp index 9ad8450bf3..1881ee6f88 100644 --- a/src/quicktemplates2/qquickdialog.cpp +++ b/src/quicktemplates2/qquickdialog.cpp @@ -212,6 +212,18 @@ QQuickDialog::QQuickDialog(QQuickDialogPrivate &dd, QObject *parent) QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged, this, &QQuickDialog::implicitFooterHeightChanged); } +QQuickDialog::~QQuickDialog() +{ + Q_D(QQuickDialog); + QObject::disconnect(d->popupItem, &QQuickPopupItem::titleChanged, this, &QQuickDialog::titleChanged); + QObject::disconnect(d->popupItem, &QQuickPopupItem::headerChanged, this, &QQuickDialog::headerChanged); + QObject::disconnect(d->popupItem, &QQuickPopupItem::footerChanged, this, &QQuickDialog::footerChanged); + QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged, this, &QQuickDialog::implicitHeaderWidthChanged); + QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged, this, &QQuickDialog::implicitHeaderHeightChanged); + QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged, this, &QQuickDialog::implicitFooterWidthChanged); + QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged, this, &QQuickDialog::implicitFooterHeightChanged); +} + /*! \qmlproperty string QtQuick.Controls::Dialog::title diff --git a/src/quicktemplates2/qquickdialog_p.h b/src/quicktemplates2/qquickdialog_p.h index 20e597511e..794f2c4f6f 100644 --- a/src/quicktemplates2/qquickdialog_p.h +++ b/src/quicktemplates2/qquickdialog_p.h @@ -79,6 +79,7 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialog : public QQuickPopup public: explicit QQuickDialog(QObject *parent = nullptr); + ~QQuickDialog(); QString title() const; void setTitle(const QString &title);