diff options
-rw-r--r-- | examples/webengine/quicknanobrowser/BrowserWindow.qml | 17 | ||||
-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 |
4 files changed, 27 insertions, 32 deletions
diff --git a/examples/webengine/quicknanobrowser/BrowserWindow.qml b/examples/webengine/quicknanobrowser/BrowserWindow.qml index e8a9cb9ce..3b276a4a9 100644 --- a/examples/webengine/quicknanobrowser/BrowserWindow.qml +++ b/examples/webengine/quicknanobrowser/BrowserWindow.qml @@ -54,18 +54,6 @@ ApplicationWindow { property Item currentWebView: tabs.currentIndex < tabs.count ? tabs.getTab(tabs.currentIndex).item : null property int previousVisibility: Window.Windowed - property bool isFullScreen: visibility == Window.FullScreen - onIsFullScreenChanged: { - // This is for the case where the system forces us to leave fullscreen. - if (currentWebView && !isFullScreen) { - currentWebView.state = "" - if (currentWebView.isFullScreen) { - currentWebView.fullScreenCancelled() - fullScreenNotification.hide() - } - } - } - width: 1300 height: 900 visible: true @@ -127,8 +115,11 @@ ApplicationWindow { Action { shortcut: "Escape" onTriggered: { - if (browserWindow.isFullScreen) + if (currentWebView.state == "FullScreen") { browserWindow.visibility = browserWindow.previousVisibility + fullScreenNotification.hide() + currentWebView.triggerWebAction(WebEngineView.ExitFullScreen); + } } } Action { 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; |