summaryrefslogtreecommitdiff
path: root/src/plugins/help
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2017-07-11 17:05:40 +0200
committerEike Ziller <eike.ziller@qt.io>2017-07-13 10:49:16 +0000
commit6afc0c3eb65b75fadb3b61389ee05483709e5101 (patch)
treecac07759cffb2105906cb6a6bc67bf23cc58047b /src/plugins/help
parentbe3dbd4c5350b5eccd9ba8e7a893e1ad96376860 (diff)
downloadqt-creator-6afc0c3eb65b75fadb3b61389ee05483709e5101.tar.gz
Help: Add method for showing URL in specific viewer
That centralizes all the focus setting, raising of windows, etc. This was for example already done wrong when opening links in help mode and external window. Change-Id: I5036b5caa751d1f36dc442078624a31fb8f573ee Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/help')
-rw-r--r--src/plugins/help/helpplugin.cpp41
-rw-r--r--src/plugins/help/helpplugin.h2
-rw-r--r--src/plugins/help/helpwidget.cpp4
3 files changed, 26 insertions, 21 deletions
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index e4e2d43e6a..ef03175df6 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -362,7 +362,6 @@ HelpViewer *HelpPlugin::externalHelpViewer()
else
m_externalWindow->setGeometry(m_externalWindowState);
m_externalWindow->show();
- m_externalWindow->setFocus();
return m_externalWindow->currentViewer();
}
@@ -428,10 +427,7 @@ void HelpPlugin::activateHelpMode()
void HelpPlugin::showLinkInHelpMode(const QUrl &source)
{
- activateHelpMode();
- ICore::raiseWindow(m_mode->widget());
- m_centralWidget->setSource(source);
- m_centralWidget->setFocus();
+ showInHelpViewer(source, helpModeHelpViewer());
}
void HelpPlugin::showLinksInHelpMode(const QMap<QString, QUrl> &links, const QString &key)
@@ -494,6 +490,15 @@ bool HelpPlugin::canShowHelpSideBySide()
return true;
}
+HelpViewer *HelpPlugin::helpModeHelpViewer()
+{
+ activateHelpMode(); // should trigger an createPage...
+ HelpViewer *viewer = m_instance->m_centralWidget->currentViewer();
+ if (!viewer)
+ viewer = OpenPagesManager::instance().createPage();
+ return viewer;
+}
+
HelpViewer *HelpPlugin::viewerForHelpViewerLocation(HelpManager::HelpViewerLocation location)
{
HelpManager::HelpViewerLocation actualLocation = location;
@@ -513,11 +518,16 @@ HelpViewer *HelpPlugin::viewerForHelpViewerLocation(HelpManager::HelpViewerLocat
QTC_CHECK(actualLocation == HelpManager::HelpModeAlways);
- activateHelpMode(); // should trigger an createPage...
- HelpViewer *viewer = m_instance->m_centralWidget->currentViewer();
- if (!viewer)
- viewer = OpenPagesManager::instance().createPage();
- return viewer;
+ return m_instance->helpModeHelpViewer();
+}
+
+void HelpPlugin::showInHelpViewer(const QUrl &url, HelpViewer *viewer)
+{
+ QTC_ASSERT(viewer, return);
+ viewer->setFocus();
+ viewer->stop();
+ viewer->setSource(url);
+ ICore::raiseWindow(viewer);
}
HelpViewer *HelpPlugin::viewerForContextHelp()
@@ -574,7 +584,7 @@ void HelpPlugin::showContextHelp()
QUrl source = findBestLink(links, &m_contextHelpHighlightId);
if (!source.isValid()) {
// No link found or no context object
- viewer->setSource(QUrl(Help::Constants::AboutBlank));
+ showInHelpViewer(QUrl(Help::Constants::AboutBlank), viewer);
viewer->setHtml(tr("<html><head><title>No Documentation</title>"
"</head><body><br/><center>"
"<font color=\"%1\"><b>%2</b></font><br/>"
@@ -584,10 +594,7 @@ void HelpPlugin::showContextHelp()
.arg(contextHelpId)
.arg(creatorTheme()->color(Theme::TextColorNormal).name()));
} else {
- viewer->setFocus();
- viewer->stop();
- viewer->setSource(source); // triggers loadFinished which triggers id highlighting
- ICore::raiseWindow(viewer);
+ showInHelpViewer(source, viewer); // triggers loadFinished which triggers id highlighting
}
}
@@ -635,9 +642,7 @@ void HelpPlugin::handleHelpRequest(const QUrl &url, HelpManager::HelpViewerLocat
}
HelpViewer *viewer = viewerForHelpViewerLocation(location);
- QTC_ASSERT(viewer, return);
- viewer->setSource(url);
- ICore::raiseWindow(viewer);
+ showInHelpViewer(url, viewer);
}
class DialogClosingOnEscape : public QDialog
diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h
index 07b31f12a8..4e02e5d3fb 100644
--- a/src/plugins/help/helpplugin.h
+++ b/src/plugins/help/helpplugin.h
@@ -76,6 +76,7 @@ public:
ShutdownFlag aboutToShutdown();
static HelpViewer *viewerForHelpViewerLocation(Core::HelpManager::HelpViewerLocation location);
+ static void showInHelpViewer(const QUrl &url, HelpViewer *viewer);
static HelpViewer *createHelpViewer(qreal zoom);
@@ -107,6 +108,7 @@ private:
HelpWidget *createHelpWidget(const Core::Context &context, HelpWidget::WidgetStyle style);
void createRightPaneContextViewer();
HelpViewer *externalHelpViewer();
+ HelpViewer *helpModeHelpViewer();
void doSetupIfNeeded();
diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp
index ca7c24d44a..207661cec6 100644
--- a/src/plugins/help/helpwidget.cpp
+++ b/src/plugins/help/helpwidget.cpp
@@ -70,9 +70,7 @@ namespace Internal {
static void openUrlInWindow(const QUrl &url)
{
HelpViewer *viewer = HelpPlugin::viewerForHelpViewerLocation(Core::HelpManager::ExternalHelpAlways);
- if (QTC_GUARD(viewer))
- viewer->setSource(url);
- Core::ICore::raiseWindow(viewer);
+ HelpPlugin::showInHelpViewer(url, viewer);
}
static bool isBookmarkable(const QUrl &url)