aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/templates/qquickapplicationwindow.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp
index 00ca38fb..3edc6cc9 100644
--- a/src/templates/qquickapplicationwindow.cpp
+++ b/src/templates/qquickapplicationwindow.cpp
@@ -104,6 +104,11 @@ public:
, activeFocusControl(Q_NULLPTR)
{ }
+ static QQuickApplicationWindowPrivate *get(QQuickApplicationWindow *window)
+ {
+ return window->d_func();
+ }
+
void relayout();
void itemImplicitWidthChanged(QQuickItem *item) Q_DECL_OVERRIDE;
@@ -226,6 +231,7 @@ QQuickApplicationWindow::~QQuickApplicationWindow()
QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
if (d->footer)
QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ d_ptr.reset();
}
/*!
@@ -495,6 +501,9 @@ public:
void QQuickApplicationWindowAttachedPrivate::windowChange(QQuickWindow *wnd)
{
Q_Q(QQuickApplicationWindowAttached);
+ if (window && !QQuickApplicationWindowPrivate::get(window))
+ window = Q_NULLPTR; // being deleted (QTBUG-52731)
+
QQuickApplicationWindow *newWindow = qobject_cast<QQuickApplicationWindow *>(wnd);
if (window != newWindow) {
QQuickApplicationWindow *oldWindow = window;