diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-02-12 11:22:41 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-03-30 12:35:46 +0000 |
commit | 6454b6b2d0f2fbb8d140fa2555af7867964748ce (patch) | |
tree | e2d209aa02aca0bbc93fd58379524acc69e8b544 /examples/webenginewidgets/demobrowser | |
parent | 3e30c0a33e301bb993efc7a046a34c8cbc68ca58 (diff) |
Add API for context menu data
For QWebEnginePage users to be able to make custom context menu or
extend the default context menu, they need information about the
context.
This patch adds a QWebEngineContextMenuData class that contains
contextual information when a context menu is being requested.
This is also means we can finally generate a custom context-menu in
the demobrowser the same way we did in QtWebKit.
Task-number: QTBUG-51079
Change-Id: I695b8cbf648bdc7f119b0ed51ab685cf2f8de8e4
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'examples/webenginewidgets/demobrowser')
-rw-r--r-- | examples/webenginewidgets/demobrowser/webview.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/examples/webenginewidgets/demobrowser/webview.cpp b/examples/webenginewidgets/demobrowser/webview.cpp index 35f765b5c..cac34577c 100644 --- a/examples/webenginewidgets/demobrowser/webview.cpp +++ b/examples/webenginewidgets/demobrowser/webview.cpp @@ -65,9 +65,7 @@ #include <QtWidgets/QMessageBox> #include <QtGui/QMouseEvent> -#if defined(QWEBENGINEPAGE_HITTESTCONTENT) -#include <QWebEngineHitTestResult> -#endif +#include <QWebEngineContextMenuData> #ifndef QT_NO_UITOOLS #include <QtUiTools/QUiLoader> @@ -381,18 +379,18 @@ void WebView::setPage(WebPage *_page) void WebView::contextMenuEvent(QContextMenuEvent *event) { - QMenu *menu = page()->createStandardContextMenu(); - const QList<QAction*> actions = menu->actions(); - QList<QAction*>::const_iterator it = qFind(actions.cbegin(), actions.cend(), page()->action(QWebEnginePage::OpenLinkInThisWindow)); - if (it != actions.cend()) { - (*it)->setText(tr("Open Link in This Window")); - ++it; - menu->insertAction(*it, page()->action(QWebEnginePage::OpenLinkInNewWindow)); - menu->insertAction(*it, page()->action(QWebEnginePage::OpenLinkInNewTab)); - menu->insertAction(*it, page()->action(QWebEnginePage::OpenLinkInNewBackgroundTab)); + if (page()->contextMenuData().linkUrl().isValid()) { + QMenu *menu = new QMenu(this); + menu->addAction(page()->action(QWebEnginePage::OpenLinkInThisWindow)); + menu->addAction(page()->action(QWebEnginePage::OpenLinkInNewWindow)); + menu->addAction(page()->action(QWebEnginePage::OpenLinkInNewBackgroundTab)); + menu->addSeparator(); + menu->addAction(page()->action(QWebEnginePage::DownloadLinkToDisk)); + menu->addAction(page()->action(QWebEnginePage::CopyLinkToClipboard)); + menu->popup(event->globalPos()); + return; } - - menu->popup(event->globalPos()); + QWebEngineView::contextMenuEvent(event); } void WebView::wheelEvent(QWheelEvent *event) |