diff options
author | Eike Ziller <[email protected]> | 2016-09-09 15:37:01 +0200 |
---|---|---|
committer | Eike Ziller <[email protected]> | 2016-09-23 11:26:07 +0000 |
commit | a416a5b6e3e0d0c038276f1093cc5a1a770c3d5c (patch) | |
tree | 0e17342fcaba4a066e8348dc8c51f28bae9f2db2 /src/plugins/help/webenginehelpviewer.cpp | |
parent | 2cd307a7b007ef7752d0797d6e99492e797fa0a2 (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.cpp | 61 |
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); |