summaryrefslogtreecommitdiffstats
path: root/examples/webenginewidgets/demobrowser
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-02-12 11:22:41 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-03-30 12:35:46 +0000
commit6454b6b2d0f2fbb8d140fa2555af7867964748ce (patch)
treee2d209aa02aca0bbc93fd58379524acc69e8b544 /examples/webenginewidgets/demobrowser
parent3e30c0a33e301bb993efc7a046a34c8cbc68ca58 (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.cpp26
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)