diff options
author | Michal Klocek <michal.klocek@theqtcompany.com> | 2015-11-05 21:07:26 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@theqtcompany.com> | 2015-12-17 14:18:10 +0000 |
commit | 1c547c6a4cafee9b26672c1fbb26b26036b62f4a (patch) | |
tree | 0a6261b2d58a1904056b9fa131efe060ee7096b8 /src | |
parent | dadf364df20391e74f1b02d4f0b0e418ae299e6f (diff) |
Fix fullscreen mode in qml api
Current implementation was not working correctly
for quicknanobrowser when entering and leaving
fullscreen video, in cases where the browser itself
was already fullscreen. Use ExitFullScreen
to leave fullscreen in demo code. Use onFullScreenRequested
handler to track if fullscreen mode is on.
Change-Id: I022d5e830b189897d34a9a8747381d041101c692
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 37 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p.h | 2 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p_p.h | 3 |
3 files changed, 23 insertions, 19 deletions
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 4f99a3e81..6f39f6dba 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -105,7 +105,7 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate() #endif , contextMenuExtraItems(0) , loadProgress(0) - , m_isFullScreen(false) + , m_fullscreenMode(false) , isLoading(false) , m_activeFocusOnPress(true) , devicePixelRatio(QGuiApplication::primaryScreen()->devicePixelRatio()) @@ -528,7 +528,7 @@ void QQuickWebEngineViewPrivate::requestFullScreenMode(const QUrl &origin, bool bool QQuickWebEngineViewPrivate::isFullScreenMode() const { - return m_isFullScreen; + return m_fullscreenMode; } void QQuickWebEngineViewPrivate::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID) @@ -754,6 +754,16 @@ void QQuickWebEngineViewPrivate::ensureContentsAdapter() } } +void QQuickWebEngineViewPrivate::setFullScreenMode(bool fullscreen) +{ + Q_Q(QQuickWebEngineView); + if (m_fullscreenMode != fullscreen) { + m_fullscreenMode = fullscreen; + adapter->changedFullScreen(); + Q_EMIT q->isFullScreenChanged(); + } +} + QUrl QQuickWebEngineView::url() const { Q_D(const QQuickWebEngineView); @@ -1061,7 +1071,7 @@ void QQuickWebEngineView::setBackgroundColor(const QColor &color) bool QQuickWebEngineView::isFullScreen() const { Q_D(const QQuickWebEngineView); - return d->m_isFullScreen; + return d->m_fullscreenMode; } void QQuickWebEngineViewExperimental::setExtraContextMenuEntriesComponent(QQmlComponent *contextMenuExtras) @@ -1179,10 +1189,7 @@ void QQuickWebEngineView::goBackOrForward(int offset) void QQuickWebEngineView::fullScreenCancelled() { Q_D(QQuickWebEngineView); - if (d->m_isFullScreen) { - d->m_isFullScreen = false; - Q_EMIT isFullScreenChanged(); - } + d->adapter->exitFullScreen(); } void QQuickWebEngineView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) @@ -1414,13 +1421,13 @@ void QQuickWebEngineView::componentComplete() } QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest() - : viewPrivate(0) + : m_viewPrivate(0) , m_toggleOn(false) { } QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest(QQuickWebEngineViewPrivate *viewPrivate, const QUrl &origin, bool toggleOn) - : viewPrivate(viewPrivate) + : m_viewPrivate(viewPrivate) , m_origin(origin) , m_toggleOn(toggleOn) { @@ -1428,18 +1435,14 @@ QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest(QQuickWebEngi void QQuickWebEngineFullScreenRequest::accept() { - if (viewPrivate && viewPrivate->m_isFullScreen != m_toggleOn) { - viewPrivate->m_isFullScreen = m_toggleOn; - viewPrivate->adapter->changedFullScreen(); - Q_EMIT viewPrivate->q_ptr->isFullScreenChanged(); - } + if (m_viewPrivate) + m_viewPrivate->setFullScreenMode(m_toggleOn); } void QQuickWebEngineFullScreenRequest::reject() { - if (viewPrivate) { - viewPrivate->adapter->changedFullScreen(); - } + if (m_viewPrivate) + m_viewPrivate->setFullScreenMode(!m_toggleOn); } QQuickWebEngineViewExperimental::QQuickWebEngineViewExperimental(QQuickWebEngineViewPrivate *viewPrivate) diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index 34224ad31..02e820fe5 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -83,7 +83,7 @@ public: bool toggleOn() const { return m_toggleOn; } private: - QQuickWebEngineViewPrivate *viewPrivate; + QQuickWebEngineViewPrivate *m_viewPrivate; const QUrl m_origin; const bool m_toggleOn; }; diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index c2210850f..8daf1f988 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -177,6 +177,7 @@ public: void adoptWebContents(QtWebEngineCore::WebContentsAdapter *webContents); void setProfile(QQuickWebEngineProfile *profile); void ensureContentsAdapter(); + void setFullScreenMode(bool); // QQmlListPropertyHelpers static void userScripts_append(QQmlListProperty<QQuickWebEngineScript> *p, QQuickWebEngineScript *script); @@ -198,7 +199,7 @@ public: QUrl explicitUrl; QUrl icon; int loadProgress; - bool m_isFullScreen; + bool m_fullscreenMode; bool isLoading; bool m_activeFocusOnPress; qreal devicePixelRatio; |