summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-11-26 12:56:44 +0100
committerLiang Qi <liang.qi@qt.io>2016-11-26 12:56:44 +0100
commit5c5c135ba8f82161f3e93b367ffacd63dc9111a3 (patch)
tree8d9ccdfd91ebed8c9377592cb90359a853d220af
parentfdf3a401b743c2e72c20f901641907b6a6ffc956 (diff)
parentba47b1f14e04ebc94190cfd46e372cc2fe464a8f (diff)
Merge remote-tracking branch 'origin/5.7' into 5.8
-rw-r--r--dist/changes-5.6.243
-rw-r--r--dist/changes-5.7.146
-rw-r--r--src/webview/qquickviewcontroller.cpp12
-rw-r--r--src/webview/qwebview_webengine.cpp121
-rw-r--r--src/webview/qwebview_webengine_p.h14
-rw-r--r--sync.profile12
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" => "",
-);