summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-04-30 10:39:42 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-04-30 10:40:26 +0200
commit4181db05fc8f1c96d0bbf2e88a64e6d3bb11c6cf (patch)
treef4f9127216f92102f3420949f82e3186fee15e54 /src/webenginewidgets
parentb546cea1b5ba6721bf7fcb687c6c069d4442ba34 (diff)
parent26ac59af2306b4f6f83e791bb3e828b9f7b1a721 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp7
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp2
-rw-r--r--src/webenginewidgets/api/qwebengineview_p.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 9c6749f39..4c0a7a21f 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -715,6 +715,13 @@ void QWebEnginePagePrivate::bindPageAndView(QWebEnginePage *page, QWebEngineView
view->d_func()->pageChanged(oldPage, page);
if (oldWidget != widget)
view->d_func()->widgetChanged(oldWidget, widget);
+
+ // At this point m_ownsPage should still refer to oldPage,
+ // it is only set for the new page after binding.
+ if (view->d_func()->m_ownsPage) {
+ delete oldPage;
+ view->d_func()->m_ownsPage = false;
+ }
}
}
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 91fc86cdf..6c08df343 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -126,6 +126,7 @@ static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *obje
QWebEngineViewPrivate::QWebEngineViewPrivate()
: page(0)
, m_dragEntered(false)
+ , m_ownsPage(false)
{
#ifndef QT_NO_ACCESSIBILITY
QAccessible::installFactory(&webAccessibleFactory);
@@ -176,6 +177,7 @@ QWebEnginePage* QWebEngineView::page() const
if (!d->page) {
QWebEngineView *that = const_cast<QWebEngineView*>(this);
that->setPage(new QWebEnginePage(that));
+ d->m_ownsPage = true;
}
return d->page;
}
diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h
index 28fb883aa..7848e0cf3 100644
--- a/src/webenginewidgets/api/qwebengineview_p.h
+++ b/src/webenginewidgets/api/qwebengineview_p.h
@@ -77,6 +77,7 @@ public:
QWebEnginePage *page;
bool m_dragEntered;
+ mutable bool m_ownsPage;
};
#ifndef QT_NO_ACCESSIBILITY