From 0e9555838c83ccf5a6a28ee99d6fd556ebf5b3b2 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 7 Sep 2015 16:06:06 +0200 Subject: Fix ABI breakage due to fullscreen feature We can not add a new virtual method without breaking ABI on some platforms, instead we need to use a setter. The API now uses a request object, and a separate signal for canceling, since canceling can not be rejected. Change-Id: If8069c343e86926293c30e8de179bf4e3cbd5886 Reviewed-by: Kai Koehne --- src/webengine/api/qquickwebengineview.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/webengine/api/qquickwebengineview.cpp') diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 3a05477a1..52245e147 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -272,7 +272,7 @@ bool QQuickWebEngineViewPrivate::contextMenuRequested(const WebEngineContextMenu QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::InspectElement); }); ui()->addMenuItem(item, QQuickWebEngineView::tr("Inspect Element")); } - if (isFullScreen()) { + if (isFullScreenMode()) { item = new MenuItemHandler(menu); QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::ExitFullScreen); }); ui()->addMenuItem(item, QQuickWebEngineView::tr("Exit Full Screen Mode")); @@ -516,14 +516,14 @@ void QQuickWebEngineViewPrivate::windowCloseRejected() #endif } -void QQuickWebEngineViewPrivate::requestFullScreen(bool fullScreen) +void QQuickWebEngineViewPrivate::requestFullScreenMode(const QUrl &origin, bool fullscreen) { Q_Q(QQuickWebEngineView); - QQuickWebEngineFullScreenRequest request(this, fullScreen); + QQuickWebEngineFullScreenRequest request(this, origin, fullscreen); Q_EMIT q->fullScreenRequested(request); } -bool QQuickWebEngineViewPrivate::isFullScreen() const +bool QQuickWebEngineViewPrivate::isFullScreenMode() const { return m_isFullScreen; } @@ -1362,8 +1362,9 @@ QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest() { } -QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest(QQuickWebEngineViewPrivate *viewPrivate, bool toggleOn) +QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest(QQuickWebEngineViewPrivate *viewPrivate, const QUrl &origin, bool toggleOn) : viewPrivate(viewPrivate) + , m_origin(origin) , m_toggleOn(toggleOn) { } @@ -1372,10 +1373,18 @@ void QQuickWebEngineFullScreenRequest::accept() { if (viewPrivate && viewPrivate->m_isFullScreen != m_toggleOn) { viewPrivate->m_isFullScreen = m_toggleOn; + viewPrivate->adapter->changedFullScreen(); Q_EMIT viewPrivate->q_ptr->isFullScreenChanged(); } } +void QQuickWebEngineFullScreenRequest::reject() +{ + if (viewPrivate) { + viewPrivate->adapter->changedFullScreen(); + } +} + QQuickWebEngineViewExperimental::QQuickWebEngineViewExperimental(QQuickWebEngineViewPrivate *viewPrivate) : q_ptr(0) , d_ptr(viewPrivate) -- cgit v1.2.3