From 281f8c2e4a5787aadf4c978139358141f626b8a4 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> Date: Tue, 25 Aug 2015 17:16:49 +0200 Subject: [PATCH] Add exit full screen web action Adds a web action that can be used for exiting fullscreen mode, and include it the context menu whenever in fullscreen mode. Change-Id: I7aa729a86f9ba9df476766cd40f87d9385948fea Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> --- src/core/web_contents_adapter.cpp | 6 ++++++ src/core/web_contents_adapter.h | 1 + src/webengine/api/qquickwebengineview.cpp | 8 ++++++++ src/webengine/api/qquickwebengineview_p.h | 1 + src/webenginewidgets/api/qwebenginepage.cpp | 8 ++++++++ src/webenginewidgets/api/qwebenginepage.h | 1 + 6 files changed, 25 insertions(+) diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 1e0d261da..a01164f1a 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -800,6 +800,12 @@ void WebContentsAdapter::inspectElementAt(const QPoint &location) } } +void WebContentsAdapter::exitFullScreen() +{ + Q_D(WebContentsAdapter); + d->webContents->ExitFullscreen(); +} + void WebContentsAdapter::wasShown() { Q_D(WebContentsAdapter); diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index 1e78f8e77..ca2f32ebe 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -126,6 +126,7 @@ public: void executeMediaPlayerActionAt(const QPoint &location, MediaPlayerAction action, bool enable); void inspectElementAt(const QPoint &location); + void exitFullScreen(); void wasShown(); void wasHidden(); diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 9a8a6ccb3..e123bda8f 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -266,6 +266,11 @@ bool QQuickWebEngineViewPrivate::contextMenuRequested(const WebEngineContextMenu QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::CopyImageToClipboard); }); ui()->addMenuItem(item, QObject::tr("Copy Image")); } + if (isFullScreen()) { + item = new MenuItemHandler(menu); + QObject::connect(item, &MenuItemHandler::triggered, [q] { q->triggerWebAction(QQuickWebEngineView::ExitFullScreen); }); + ui()->addMenuItem(item, QObject::tr("Exit Full Screen Mode")); + } // FIXME: expose the context menu data as an attached property to make this more useful if (contextMenuExtraItems) { @@ -1292,6 +1297,9 @@ void QQuickWebEngineView::triggerWebAction(WebAction action) case InspectElement: d->adapter->inspectElementAt(d->contextMenuData.pos); break; + case ExitFullScreen: + d->adapter->exitFullScreen(); + break; default: Q_UNREACHABLE(); } diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index 934303722..c7625d209 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -224,6 +224,7 @@ public: DownloadMediaToDisk, InspectElement, + ExitFullScreen, WebActionCount }; diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 1cf51df72..472e95871 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -595,6 +595,9 @@ QAction *QWebEnginePage::action(WebAction action) const case InspectElement: text = tr("Inspect Element"); break; + case ExitFullScreen: + text = tr("Exit Full Screen Mode"); + break; default: break; } @@ -762,6 +765,9 @@ void QWebEnginePage::triggerAction(WebAction action, bool) case InspectElement: d->adapter->inspectElementAt(d->m_menuData.pos); break; + case ExitFullScreen: + d->adapter->exitFullScreen(); + break; default: Q_UNREACHABLE(); } @@ -968,6 +974,8 @@ QMenu *QWebEnginePage::createStandardContextMenu() } else if (contextMenuData.mediaType == WebEngineContextMenuData::MediaTypeCanvas) { menu->addAction(QWebEnginePage::action(CopyImageToClipboard)); } + if (d->isFullScreen()) + menu->addAction(QWebEnginePage::action(ExitFullScreen)); return menu; } diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index c324f3737..d027998ee 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -107,6 +107,7 @@ public: DownloadMediaToDisk, InspectElement, + ExitFullScreen, WebActionCount }; -- GitLab