summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@theqtcompany.com>2015-11-05 21:07:26 +0100
committerMichal Klocek <michal.klocek@theqtcompany.com>2015-12-17 14:18:10 +0000
commit1c547c6a4cafee9b26672c1fbb26b26036b62f4a (patch)
tree0a6261b2d58a1904056b9fa131efe060ee7096b8 /src
parentdadf364df20391e74f1b02d4f0b0e418ae299e6f (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.cpp37
-rw-r--r--src/webengine/api/qquickwebengineview_p.h2
-rw-r--r--src/webengine/api/qquickwebengineview_p_p.h3
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;