Commit c7325111 authored by Christian Strømme's avatar Christian Strømme Committed by Christian Stromme
Browse files

Fix crash on destruction of QWebView instances.


The QWebView and QWebViewPrivate class are now in the object tree and
will therefore be delete once their parent is destroyed.
This change removes the QScopedPointers that used to manage the
lifetime of the webview instances.

Task-number: QTBUG-46286
Change-Id: I2d7f12b317770113e5b35c14b60df7442aa3e68e
Reviewed-by: default avatarEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Showing with 13 additions and 10 deletions
......@@ -90,13 +90,13 @@ QQuickWebView::QQuickWebView(QQuickItem *parent)
: QQuickViewController(parent)
, m_webView(new QWebView(this))
{
setView(m_webView.data());
connect(m_webView.data(), &QWebView::titleChanged, this, &QQuickWebView::titleChanged);
connect(m_webView.data(), &QWebView::urlChanged, this, &QQuickWebView::urlChanged);
connect(m_webView.data(), &QWebView::loadProgressChanged, this, &QQuickWebView::loadProgressChanged);
connect(m_webView.data(), &QWebView::loadingChanged, this, &QQuickWebView::onLoadingChanged);
connect(m_webView.data(), &QWebView::requestFocus, this, &QQuickWebView::onFocusRequest);
connect(m_webView.data(), &QWebView::javaScriptResult, this, &QQuickWebView::onRunJavaScriptResult);
setView(m_webView);
connect(m_webView, &QWebView::titleChanged, this, &QQuickWebView::titleChanged);
connect(m_webView, &QWebView::urlChanged, this, &QQuickWebView::urlChanged);
connect(m_webView, &QWebView::loadProgressChanged, this, &QQuickWebView::loadProgressChanged);
connect(m_webView, &QWebView::loadingChanged, this, &QQuickWebView::onLoadingChanged);
connect(m_webView, &QWebView::requestFocus, this, &QQuickWebView::onFocusRequest);
connect(m_webView, &QWebView::javaScriptResult, this, &QQuickWebView::onRunJavaScriptResult);
}
QQuickWebView::~QQuickWebView()
......
......@@ -112,7 +112,7 @@ private Q_SLOTS:
void onLoadingChanged(const QWebViewLoadRequestPrivate &loadRequest);
private:
QScopedPointer<QWebView> m_webView;
QWebView* m_webView;
};
QT_END_NAMESPACE
......
......@@ -128,7 +128,8 @@ QAndroidWebViewPrivate::QAndroidWebViewPrivate(QObject *p)
QAndroidWebViewPrivate::~QAndroidWebViewPrivate()
{
g_webViews->take(m_id);
delete m_window;
if (m_window != 0 && m_window->parent() == 0)
delete m_window;
}
QUrl QAndroidWebViewPrivate::url() const
......
......@@ -143,6 +143,8 @@ QOsxWebViewPrivate::~QOsxWebViewPrivate()
{
[webView.frameLoadDelegate release];
[webView release];
if (m_window != 0 && m_window->parent() == 0)
delete m_window;
}
QUrl QOsxWebViewPrivate::url() const
......
......@@ -128,7 +128,7 @@ private:
int m_progress;
Q_DECLARE_PRIVATE(QWebView)
QScopedPointer<QWebViewPrivate> d_ptr;
QWebViewPrivate *d_ptr;
};
QT_END_NAMESPACE
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment