summaryrefslogtreecommitdiffstats
path: root/src/webengine/api
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-11-11 11:24:20 +0100
committerAllan Sandfeld Jensen <allan.jensen@digia.com>2014-11-11 11:24:20 +0100
commitc254868dc2bd5772494a48686ebbc3e867a86adf (patch)
tree76c33df85ab2ef13e44f7677b43439c7b0d3b36a /src/webengine/api
parentfca9015175950b04bafb9b3af7d4e693eb0243d9 (diff)
parentaa1b2d20a80f53ce5e7f6097114d41a018d9350b (diff)
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts: src/core/browser_context_qt.cpp src/webengine/api/qquickwebengineview_p.h Change-Id: I73bdec03b627b282851d7dda12006d4ab631072c
Diffstat (limited to 'src/webengine/api')
-rw-r--r--src/webengine/api/qquickwebenginesettings.cpp15
-rw-r--r--src/webengine/api/qquickwebenginesettings_p.h4
-rw-r--r--src/webengine/api/qquickwebengineview.cpp5
-rw-r--r--src/webengine/api/qquickwebengineview_p.h4
-rw-r--r--src/webengine/api/qquickwebengineview_p_p.h1
-rw-r--r--src/webengine/api/qtwebengineglobal.cpp17
6 files changed, 39 insertions, 7 deletions
diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp
index aa6290aa8..7f36bad5e 100644
--- a/src/webengine/api/qquickwebenginesettings.cpp
+++ b/src/webengine/api/qquickwebenginesettings.cpp
@@ -140,6 +140,12 @@ bool QQuickWebEngineSettings::hyperlinkAuditingEnabled() const
return d->coreSettings->testAttribute(WebEngineSettings::HyperlinkAuditingEnabled);
}
+bool QQuickWebEngineSettings::errorPageEnabled() const
+{
+ Q_D(const QQuickWebEngineSettings);
+ return d->coreSettings->testAttribute(WebEngineSettings::ErrorPageEnabled);
+}
+
QString QQuickWebEngineSettings::defaultTextEncoding() const
{
Q_D(const QQuickWebEngineSettings);
@@ -239,6 +245,15 @@ void QQuickWebEngineSettings::setHyperlinkAuditingEnabled(bool on)
Q_EMIT hyperlinkAuditingEnabledChanged(on);
}
+void QQuickWebEngineSettings::setErrorPageEnabled(bool on)
+{
+ Q_D(QQuickWebEngineSettings);
+ bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::ErrorPageEnabled);
+ d->coreSettings->setAttribute(WebEngineSettings::ErrorPageEnabled, on);
+ if (wasOn ^ on)
+ Q_EMIT errorPageEnabledChanged(on);
+}
+
void QQuickWebEngineSettings::setDefaultTextEncoding(QString encoding)
{
Q_D(QQuickWebEngineSettings);
diff --git a/src/webengine/api/qquickwebenginesettings_p.h b/src/webengine/api/qquickwebenginesettings_p.h
index 0fa44ef44..4a7c2f834 100644
--- a/src/webengine/api/qquickwebenginesettings_p.h
+++ b/src/webengine/api/qquickwebenginesettings_p.h
@@ -57,6 +57,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject {
Q_PROPERTY(bool spatialNavigationEnabled READ spatialNavigationEnabled WRITE setSpatialNavigationEnabled NOTIFY spatialNavigationEnabledChanged)
Q_PROPERTY(bool localContentCanAccessFileUrls READ localContentCanAccessFileUrls WRITE setLocalContentCanAccessFileUrls NOTIFY localContentCanAccessFileUrlsChanged)
Q_PROPERTY(bool hyperlinkAuditingEnabled READ hyperlinkAuditingEnabled WRITE setHyperlinkAuditingEnabled NOTIFY hyperlinkAuditingEnabledChanged)
+ Q_PROPERTY(bool errorPageEnabled READ errorPageEnabled WRITE setErrorPageEnabled NOTIFY errorPageEnabledChanged)
Q_PROPERTY(QString defaultTextEncoding READ defaultTextEncoding WRITE setDefaultTextEncoding NOTIFY defaultTextEncodingChanged)
public:
@@ -74,6 +75,7 @@ public:
bool spatialNavigationEnabled() const;
bool localContentCanAccessFileUrls() const;
bool hyperlinkAuditingEnabled() const;
+ bool errorPageEnabled() const;
QString defaultTextEncoding() const;
void setAutoLoadImages(bool on);
@@ -86,6 +88,7 @@ public:
void setSpatialNavigationEnabled(bool on);
void setLocalContentCanAccessFileUrls(bool on);
void setHyperlinkAuditingEnabled(bool on);
+ void setErrorPageEnabled(bool on);
void setDefaultTextEncoding(QString encoding);
signals:
@@ -99,6 +102,7 @@ signals:
void spatialNavigationEnabledChanged(bool on);
void localContentCanAccessFileUrlsChanged(bool on);
void hyperlinkAuditingEnabledChanged(bool on);
+ void errorPageEnabledChanged(bool on);
void defaultTextEncodingChanged(QString encoding);
private:
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index ce53d4f8a..3a6b8cb21 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -242,6 +242,7 @@ void QQuickWebEngineViewPrivate::urlChanged(const QUrl &url)
{
Q_Q(QQuickWebEngineView);
Q_UNUSED(url);
+ explicitUrl = QUrl();
Q_EMIT q->urlChanged();
}
@@ -310,6 +311,7 @@ void QQuickWebEngineViewPrivate::loadFinished(bool success, const QUrl &url, int
return;
}
if (success) {
+ explicitUrl = QUrl();
QQuickWebEngineLoadRequest loadRequest(url, QQuickWebEngineView::LoadSucceededStatus);
Q_EMIT q->loadingChanged(&loadRequest);
return;
@@ -514,7 +516,7 @@ QQuickWebEngineView::~QQuickWebEngineView()
QUrl QQuickWebEngineView::url() const
{
Q_D(const QQuickWebEngineView);
- return d->adapter->activeUrl();
+ return d->explicitUrl.isValid() ? d->explicitUrl : d->adapter->activeUrl();
}
void QQuickWebEngineView::setUrl(const QUrl& url)
@@ -523,6 +525,7 @@ void QQuickWebEngineView::setUrl(const QUrl& url)
return;
Q_D(QQuickWebEngineView);
+ d->explicitUrl = url;
d->adapter->load(url);
}
diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h
index e2871a79e..9f6493022 100644
--- a/src/webengine/api/qquickwebengineview_p.h
+++ b/src/webengine/api/qquickwebengineview_p.h
@@ -54,8 +54,8 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineView : public QQuickItem {
Q_PROPERTY(bool loading READ isLoading NOTIFY loadingChanged)
Q_PROPERTY(int loadProgress READ loadProgress NOTIFY loadProgressChanged)
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
- Q_PROPERTY(bool canGoBack READ canGoBack NOTIFY loadingChanged)
- Q_PROPERTY(bool canGoForward READ canGoForward NOTIFY loadingChanged)
+ Q_PROPERTY(bool canGoBack READ canGoBack NOTIFY urlChanged)
+ Q_PROPERTY(bool canGoForward READ canGoForward NOTIFY urlChanged)
Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged)
Q_ENUMS(NavigationRequestAction);
Q_ENUMS(NavigationType);
diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
index a89de5556..c7ea6575e 100644
--- a/src/webengine/api/qquickwebengineview_p_p.h
+++ b/src/webengine/api/qquickwebengineview_p_p.h
@@ -190,6 +190,7 @@ public:
QScopedPointer<QQuickWebEngineHistory> m_history;
QScopedPointer<QQuickWebEngineSettings> m_settings;
QQmlComponent *contextMenuExtraItems;
+ QUrl explicitUrl;
QUrl icon;
int loadProgress;
bool inspectable;
diff --git a/src/webengine/api/qtwebengineglobal.cpp b/src/webengine/api/qtwebengineglobal.cpp
index ea119bba6..b179da2fe 100644
--- a/src/webengine/api/qtwebengineglobal.cpp
+++ b/src/webengine/api/qtwebengineglobal.cpp
@@ -43,6 +43,7 @@
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT void qt_gl_set_global_share_context(QOpenGLContext *context);
+Q_GUI_EXPORT QOpenGLContext *qt_gl_global_share_context();
namespace QtWebEngine {
@@ -54,8 +55,20 @@ static void deleteShareContext()
shareContext = 0;
}
+// ### Qt 6: unify this logic and Qt::AA_ShareOpenGLContexts.
+// QtWebEngine::initialize was introduced first and meant to be called
+// after the QGuiApplication creation, when AA_ShareOpenGLContexts fills
+// the same need but the flag has to be set earlier.
void initialize()
{
+#ifdef Q_OS_WIN32
+ qputenv("QT_D3DCREATE_MULTITHREADED", "1");
+#endif
+
+ // No need to override the shared context if QApplication already set one (e.g with Qt::AA_ShareOpenGLContexts).
+ if (qt_gl_global_share_context())
+ return;
+
QCoreApplication *app = QCoreApplication::instance();
if (!app) {
qFatal("QWebEngine(Widgets)::initialize() must be called after the construction of the application object.");
@@ -69,10 +82,6 @@ void initialize()
if (shareContext)
return;
-#ifdef Q_OS_WIN32
- qputenv("QT_D3DCREATE_MULTITHREADED", "1");
-#endif
-
shareContext = new QOpenGLContext;
shareContext->create();
qAddPostRoutine(deleteShareContext);