aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/help/webenginehelpviewer.cpp
diff options
context:
space:
mode:
authorEike Ziller <[email protected]>2016-09-09 15:37:01 +0200
committerEike Ziller <[email protected]>2016-09-23 11:26:07 +0000
commita416a5b6e3e0d0c038276f1093cc5a1a770c3d5c (patch)
tree0e17342fcaba4a066e8348dc8c51f28bae9f2db2 /src/plugins/help/webenginehelpviewer.cpp
parent2cd307a7b007ef7752d0797d6e99492e797fa0a2 (diff)
Help: Option to open links in window
Task-number: QTCREATORBUG-16842 Change-Id: I420f48a00c56ebc89bade7e91ceb8ec391316e36 Reviewed-by: David Schulz <[email protected]> Reviewed-by: Leena Miettinen <[email protected]>
Diffstat (limited to 'src/plugins/help/webenginehelpviewer.cpp')
-rw-r--r--src/plugins/help/webenginehelpviewer.cpp61
1 files changed, 39 insertions, 22 deletions
diff --git a/src/plugins/help/webenginehelpviewer.cpp b/src/plugins/help/webenginehelpviewer.cpp
index 55ebc4e57e9..785d62845d1 100644
--- a/src/plugins/help/webenginehelpviewer.cpp
+++ b/src/plugins/help/webenginehelpviewer.cpp
@@ -25,6 +25,7 @@
#include "webenginehelpviewer.h"
+#include "helpconstants.h"
#include "localhelpmanager.h"
#include "openpagesmanager.h"
@@ -34,6 +35,7 @@
#include <QContextMenuEvent>
#include <QCoreApplication>
#include <QVBoxLayout>
+#include <QWebEngineContextMenuData>
#include <QWebEngineHistory>
#include <QWebEngineProfile>
#include <QWebEngineSettings>
@@ -98,7 +100,7 @@ WebEngineHelpViewer::WebEngineHelpViewer(QWidget *parent) :
QAction* action = m_widget->pageAction(QWebEnginePage::OpenLinkInNewTab);
action->setText(QCoreApplication::translate("HelpViewer",
- "Open Link as New Page"));
+ Constants::TR_OPEN_LINK_AS_NEW_PAGE));
QWebEnginePage *viewPage = m_widget->page();
QTC_ASSERT(viewPage, return);
@@ -202,11 +204,6 @@ void WebEngineHelpViewer::addForwardHistoryItems(QMenu *forwardMenu)
}
}
-void WebEngineHelpViewer::setOpenInNewPageActionVisible(bool visible)
-{
- m_widget->setOpenInNewPageActionVisible(visible);
-}
-
bool WebEngineHelpViewer::findText(const QString &text, Core::FindFlags flags, bool incremental,
bool fromSearch, bool *wrapped)
{
@@ -276,35 +273,55 @@ WebEngineHelpPage::WebEngineHelpPage(QObject *parent)
{
}
+#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
QWebEnginePage *WebEngineHelpPage::createWindow(QWebEnginePage::WebWindowType)
{
auto viewer = static_cast<WebEngineHelpViewer *>(OpenPagesManager::instance().createPage());
return viewer->page();
}
+#endif
-WebView::WebView(QWidget *parent)
- : QWebEngineView(parent)
-{
-}
-
-void WebView::setOpenInNewPageActionVisible(bool visible)
+WebView::WebView(WebEngineHelpViewer *viewer)
+ : QWebEngineView(viewer),
+ m_viewer(viewer)
{
- m_openInNewPageActionVisible = visible;
}
void WebView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu *menu = page()->createStandardContextMenu();
- if (m_openInNewPageActionVisible) {
- // insert Open In New Tab if OpenLinkInThisWindow is also there
- const QList<QAction*> actions = menu->actions();
- auto it = std::find(actions.cbegin(), actions.cend(), page()->action(QWebEnginePage::OpenLinkInThisWindow));
- if (it != actions.cend()) {
- // insert after
- ++it;
- QAction *before = (it == actions.cend() ? 0 : *it);
- menu->insertAction(before, page()->action(QWebEnginePage::OpenLinkInNewTab));
+ // insert Open as New Page etc if OpenLinkInThisWindow is also there
+ const QList<QAction*> actions = menu->actions();
+ auto it = std::find(actions.cbegin(), actions.cend(),
+ page()->action(QWebEnginePage::OpenLinkInThisWindow));
+ if (it != actions.cend()) {
+ // insert after
+ ++it;
+ QAction *before = (it == actions.cend() ? 0 : *it);
+#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
+ if (m_viewer->isActionVisible(HelpViewer::Action::NewPage)) {
+ QAction *openLinkInNewTab = page()->action(QWebEnginePage::OpenLinkInNewTab);
+ menu->insertAction(before, openLinkInNewTab);
+ }
+#else
+ QUrl url = page()->contextMenuData().linkUrl();
+ if (m_viewer->isActionVisible(HelpViewer::Action::NewPage)) {
+ auto openLink = new QAction(QCoreApplication::translate("HelpViewer",
+ Constants::TR_OPEN_LINK_IN_NEW_PAGE), menu);
+ connect(openLink, &QAction::triggered, m_viewer, [this, url] {
+ m_viewer->newPageRequested(url);
+ });
+ menu->insertAction(before, openLink);
+ }
+ if (m_viewer->isActionVisible(HelpViewer::Action::ExternalWindow)) {
+ auto openLink = new QAction(QCoreApplication::translate("HelpViewer",
+ Constants::TR_OPEN_LINK_IN_WINDOW), menu);
+ connect(openLink, &QAction::triggered, m_viewer, [this, url] {
+ m_viewer->externalPageRequested(url);
+ });
+ menu->insertAction(before, openLink);
}
+#endif
}
connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater);