diff options
author | Liang Qi <liang.qi@qt.io> | 2016-11-26 12:56:44 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-11-26 12:56:44 +0100 |
commit | 5c5c135ba8f82161f3e93b367ffacd63dc9111a3 (patch) | |
tree | 8d9ccdfd91ebed8c9377592cb90359a853d220af | |
parent | fdf3a401b743c2e72c20f901641907b6a6ffc956 (diff) | |
parent | ba47b1f14e04ebc94190cfd46e372cc2fe464a8f (diff) |
Merge remote-tracking branch 'origin/5.7' into 5.8
Change-Id: Ic0a450feecba47e287403582703d82fb48e3a41f
-rw-r--r-- | dist/changes-5.6.2 | 43 | ||||
-rw-r--r-- | dist/changes-5.7.1 | 46 | ||||
-rw-r--r-- | src/webview/qquickviewcontroller.cpp | 12 | ||||
-rw-r--r-- | src/webview/qwebview_webengine.cpp | 121 | ||||
-rw-r--r-- | src/webview/qwebview_webengine_p.h | 14 | ||||
-rw-r--r-- | sync.profile | 12 |
6 files changed, 153 insertions, 95 deletions
diff --git a/dist/changes-5.6.2 b/dist/changes-5.6.2 new file mode 100644 index 0000000..19d53f4 --- /dev/null +++ b/dist/changes-5.6.2 @@ -0,0 +1,43 @@ +Qt 5.6.2 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.6.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + http://doc.qt.io/qt-5/index.html + +The Qt version 5.6 series is binary compatible with the 5.5.x series. +Applications compiled for 5.5 will continue to run with 5.6. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Library * +**************************************************************************** + +QtWebView +--------- + +- [QTBUG-55127] Fixed QQuickViewChangeListener, so it to properly removes + itself from its ancestors. + +**************************************************************************** +* Platform-specific Changes * +**************************************************************************** + +Android +------- + + - [QTBUG-53736] Added support for various url schemes. + +WinRT +----- + +- [QTBUG-53405] Fixed sizing and position issues that occurred when a DPI + scale value different than 1.0 was used. diff --git a/dist/changes-5.7.1 b/dist/changes-5.7.1 new file mode 100644 index 0000000..c633fd5 --- /dev/null +++ b/dist/changes-5.7.1 @@ -0,0 +1,46 @@ +Qt 5.7.1 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.7.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.7 series is binary compatible with the 5.6.x series. +Applications compiled for 5.6 will continue to run with 5.7. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Library * +**************************************************************************** + +QtWebView +--------- + +- [QTBUG-53839] Fixed issue with initial properties not being forwarded + to the WebEngine web view. + +- [QTBUG-55127] Fixed QQuickViewChangeListener, so it to properly removes + itself from its ancestors. + +**************************************************************************** +* Platform-specific Changes * +**************************************************************************** + +Android +------- + + - [QTBUG-53736] Added support for various url schemes. + +WinRT +----- + +- [QTBUG-53405] Fixed sizing and position issues that occurred when a DPI + scale value different than 1.0 was used. diff --git a/src/webview/qquickviewcontroller.cpp b/src/webview/qquickviewcontroller.cpp index 82bdb90..0410196 100644 --- a/src/webview/qquickviewcontroller.cpp +++ b/src/webview/qquickviewcontroller.cpp @@ -99,19 +99,19 @@ void QQuickViewChangeListener::itemChildRemoved(QQuickItem *item, QQuickItem *ch Q_UNUSED(item) Q_ASSERT(item != m_item); - const bool ancestor = isAncestor(child); + const bool remove = (child == m_item) || isAncestor(child); - // if the child isn't an ancestor of the view item, then we don't care. - if (!ancestor) + // if the child isn't the view item or its ancestor, then we don't care. + if (!remove) return; // Remove any listener we attached to the child and its ancestors. - removeAncestorListeners(child, changeMask); + removeAncestorListeners(item, changeMask); } -void QQuickViewChangeListener::itemParentChanged(QQuickItem * /*item*/, QQuickItem *newParent) +void QQuickViewChangeListener::itemParentChanged(QQuickItem *item, QQuickItem *newParent) { - removeAncestorListeners(m_item->parentItem(), changeMask); + removeAncestorListeners(item->parentItem(), changeMask); // Adds this as a listener for newParent and its ancestors. addAncestorListeners(newParent, changeMask); } diff --git a/src/webview/qwebview_webengine.cpp b/src/webview/qwebview_webengine.cpp index 5f2f119..e7d09e2 100644 --- a/src/webview/qwebview_webengine.cpp +++ b/src/webview/qwebview_webengine.cpp @@ -45,16 +45,13 @@ #include <QtCore/qjsondocument.h> #include <QtCore/qjsonobject.h> #include <QtCore/qurl.h> -#include <QtCore/qdebug.h> -#include <QtCore/qrunnable.h> + +#include <QtQml/qqml.h> #include <QtQuick/qquickwindow.h> #include <QtQuick/qquickview.h> #include <QtQuick/qquickitem.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlcontext.h> - #include <QtWebEngine/private/qquickwebengineview_p.h> #include <QtWebEngine/private/qquickwebengineloadrequest_p.h> @@ -76,9 +73,8 @@ QWebViewPrivate *QWebViewPrivate::create(QWebView *q) QWebEngineWebViewPrivate::QWebEngineWebViewPrivate(QObject *p) : QWebViewPrivate(p) - , m_webEngineView(0) { - + m_webEngineView.m_parent = this; } QWebEngineWebViewPrivate::~QWebEngineWebViewPrivate() @@ -87,70 +83,52 @@ QWebEngineWebViewPrivate::~QWebEngineWebViewPrivate() QUrl QWebEngineWebViewPrivate::url() const { - if (!m_webEngineView) - return QUrl(); - return m_webEngineView->url(); } void QWebEngineWebViewPrivate::setUrl(const QUrl &url) { - if (m_webEngineView) - m_webEngineView->setUrl(url); + m_webEngineView->setUrl(url); } void QWebEngineWebViewPrivate::loadHtml(const QString &html, const QUrl &baseUrl) { - if (m_webEngineView) - m_webEngineView->loadHtml(html, baseUrl); + m_webEngineView->loadHtml(html, baseUrl); } bool QWebEngineWebViewPrivate::canGoBack() const { - if (!m_webEngineView) - return false; - return m_webEngineView->canGoBack(); } void QWebEngineWebViewPrivate::goBack() { - if (m_webEngineView) - m_webEngineView->goBack(); + m_webEngineView->goBack(); } bool QWebEngineWebViewPrivate::canGoForward() const { - if (!m_webEngineView) - return false; - return m_webEngineView->canGoForward(); } void QWebEngineWebViewPrivate::goForward() { - if (m_webEngineView) - m_webEngineView->goForward(); + m_webEngineView->goForward(); } void QWebEngineWebViewPrivate::reload() { - if (m_webEngineView) - m_webEngineView->reload(); + m_webEngineView->reload(); } QString QWebEngineWebViewPrivate::title() const { - if (!m_webEngineView) - return QString(); - return m_webEngineView->title(); } void QWebEngineWebViewPrivate::setGeometry(const QRect &geometry) { - if (m_webEngineView) - m_webEngineView->setSize(geometry.size()); + m_webEngineView->setSize(geometry.size()); } void QWebEngineWebViewPrivate::setVisibility(QWindow::Visibility visibility) @@ -161,77 +139,37 @@ void QWebEngineWebViewPrivate::setVisibility(QWindow::Visibility visibility) void QWebEngineWebViewPrivate::runJavaScriptPrivate(const QString &script, int callbackId) { - if (m_webEngineView) - m_webEngineView->runJavaScript(script, QQuickWebView::takeCallback(callbackId)); + m_webEngineView->runJavaScript(script, QQuickWebView::takeCallback(callbackId)); } void QWebEngineWebViewPrivate::setVisible(bool visible) { - if (m_webEngineView) - m_webEngineView->setVisible(visible); + m_webEngineView->setVisible(visible); } int QWebEngineWebViewPrivate::loadProgress() const { - if (!m_webEngineView) - return 0; - return m_webEngineView->loadProgress(); } bool QWebEngineWebViewPrivate::isLoading() const { - if (!m_webEngineView) - return false; - return m_webEngineView->isLoading(); } void QWebEngineWebViewPrivate::setParentView(QObject *parentView) { - if (m_webEngineView != 0 || parentView == 0) - return; - - QObject *p = parent(); - QQuickItem *parentItem = 0; - while (p != 0) { - p = p->parent(); - parentItem = qobject_cast<QQuickWebView *>(p); - if (parentItem != 0) - break; - } - - if (!parentItem) - return; - - QQmlContext *ctx = QQmlEngine::contextForObject(parentItem); - if (!ctx) - return; - - QQmlEngine *engine = ctx->engine(); - if (!engine) - return; - - QQmlComponent *component = new QQmlComponent(engine); - component->setData(qmlSource(), QUrl::fromLocalFile(QLatin1String(""))); - QQuickWebEngineView *webEngineView = qobject_cast<QQuickWebEngineView *>(component->create()); - connect(webEngineView, &QQuickWebEngineView::urlChanged, this, &QWebEngineWebViewPrivate::q_urlChanged); - connect(webEngineView, &QQuickWebEngineView::loadProgressChanged, this, &QWebEngineWebViewPrivate::q_loadProgressChanged); - connect(webEngineView, &QQuickWebEngineView::loadingChanged, this, &QWebEngineWebViewPrivate::q_loadingChanged); - connect(webEngineView, &QQuickWebEngineView::titleChanged, this, &QWebEngineWebViewPrivate::q_titleChanged); - webEngineView->setParentItem(parentItem); - m_webEngineView.reset(webEngineView); + Q_UNUSED(parentView); } QObject *QWebEngineWebViewPrivate::parentView() const { - return m_webEngineView ? m_webEngineView->window() : 0; + return m_webEngineView->window(); } void QWebEngineWebViewPrivate::stop() { - if (m_webEngineView) - m_webEngineView->stop(); + m_webEngineView->stop(); } void QWebEngineWebViewPrivate::q_urlChanged() @@ -258,4 +196,35 @@ void QWebEngineWebViewPrivate::q_loadingChanged(QQuickWebEngineLoadRequest *load Q_EMIT loadingChanged(lr); } +void QWebEngineWebViewPrivate::QQuickWebEngineViewPtr::init() const +{ + Q_ASSERT(!m_webEngineView); + QObject *p = qobject_cast<QObject *>(m_parent); + QQuickItem *parentItem = Q_NULLPTR; + while (p) { + p = p->parent(); + parentItem = qobject_cast<QQuickWebView *>(p); + if (parentItem) + break; + } + + if (!parentItem) + return; + + QQmlEngine *engine = qmlEngine(parentItem); + if (!engine) + return; + + QQmlComponent *component = new QQmlComponent(engine); + component->setData(qmlSource(), QUrl::fromLocalFile(QLatin1String(""))); + QQuickWebEngineView *webEngineView = qobject_cast<QQuickWebEngineView *>(component->create()); + Q_ASSERT(webEngineView); + QObject::connect(webEngineView, &QQuickWebEngineView::urlChanged, m_parent, &QWebEngineWebViewPrivate::q_urlChanged); + QObject::connect(webEngineView, &QQuickWebEngineView::loadProgressChanged, m_parent, &QWebEngineWebViewPrivate::q_loadProgressChanged); + QObject::connect(webEngineView, &QQuickWebEngineView::loadingChanged, m_parent, &QWebEngineWebViewPrivate::q_loadingChanged); + QObject::connect(webEngineView, &QQuickWebEngineView::titleChanged, m_parent, &QWebEngineWebViewPrivate::q_titleChanged); + webEngineView->setParentItem(parentItem); + m_webEngineView.reset(webEngineView); +} + QT_END_NAMESPACE diff --git a/src/webview/qwebview_webengine_p.h b/src/webview/qwebview_webengine_p.h index f1f7b05..623b455 100644 --- a/src/webview/qwebview_webengine_p.h +++ b/src/webview/qwebview_webengine_p.h @@ -100,7 +100,19 @@ protected: int callbackId) Q_DECL_OVERRIDE; private: - QScopedPointer<QQuickWebEngineView> m_webEngineView; + struct QQuickWebEngineViewPtr + { + inline QQuickWebEngineView *operator->() const + { + if (!m_webEngineView) + init(); + return m_webEngineView.data(); + } + void init() const; + + QWebEngineWebViewPrivate *m_parent; + mutable QScopedPointer<QQuickWebEngineView> m_webEngineView; + } m_webEngineView; }; QT_END_NAMESPACE diff --git a/sync.profile b/sync.profile index d35d109..91bb6a1 100644 --- a/sync.profile +++ b/sync.profile @@ -3,15 +3,3 @@ ); %moduleheaders = ( # restrict the module headers to those found in relative path ); -# Module dependencies. -# Every module that is required to build this module should have one entry. -# Each of the module version specifiers can take one of the following values: -# - A specific Git revision. -# - any git symbolic ref resolvable from the module's repository (e.g. "refs/heads/master" to track master branch) -# - an empty string to use the same branch under test (dependencies will become "refs/heads/master" if we are in the master branch) -# -%dependencies = ( - "qtbase" => "", - "qtdeclarative" => "", - "qtwebengine" => "", -); |