summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/coreplugin/icore.cpp11
-rw-r--r--src/plugins/coreplugin/icore.h11
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp24
-rw-r--r--src/plugins/coreplugin/mainwindow.h6
-rw-r--r--src/plugins/cppeditor/cpphoverhandler.cpp1
-rw-r--r--src/plugins/help/helpplugin.cpp77
-rw-r--r--src/plugins/texteditor/basehoverhandler.cpp12
-rw-r--r--src/plugins/texteditor/basehoverhandler.h2
-rw-r--r--src/plugins/texteditor/images/f1.pngbin590 -> 0 bytes
-rw-r--r--src/plugins/texteditor/images/f1.svg175
-rw-r--r--src/plugins/texteditor/texteditor.cpp2
-rw-r--r--src/plugins/texteditor/texteditor.qrc1
12 files changed, 82 insertions, 240 deletions
diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp
index 6bb5ca9190..1efea803ec 100644
--- a/src/plugins/coreplugin/icore.cpp
+++ b/src/plugins/coreplugin/icore.cpp
@@ -528,19 +528,20 @@ void ICore::raiseWindow(QWidget *widget)
}
}
-void ICore::updateAdditionalContexts(const Context &remove, const Context &add)
+void ICore::updateAdditionalContexts(const Context &remove, const Context &add,
+ ContextPriority priority)
{
- m_mainwindow->updateAdditionalContexts(remove, add);
+ m_mainwindow->updateAdditionalContexts(remove, add, priority);
}
-void ICore::addAdditionalContext(const Context &context)
+void ICore::addAdditionalContext(const Context &context, ContextPriority priority)
{
- m_mainwindow->updateAdditionalContexts(Context(), context);
+ m_mainwindow->updateAdditionalContexts(Context(), context, priority);
}
void ICore::removeAdditionalContext(const Context &context)
{
- m_mainwindow->updateAdditionalContexts(context, Context());
+ m_mainwindow->updateAdditionalContexts(context, Context(), ContextPriority::Low);
}
void ICore::addContextObject(IContext *context)
diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h
index 783753ebb7..6f5e98ddd8 100644
--- a/src/plugins/coreplugin/icore.h
+++ b/src/plugins/coreplugin/icore.h
@@ -65,6 +65,11 @@ class CORE_EXPORT ICore : public QObject
~ICore();
public:
+ enum class ContextPriority {
+ High,
+ Low
+ };
+
// This should only be used to acccess the signals, so it could
// theoretically return an QObject *. For source compatibility
// it returns a ICore.
@@ -107,8 +112,10 @@ public:
static IContext *currentContextObject();
// Adds and removes additional active contexts, these contexts are appended
// to the currently active contexts.
- static void updateAdditionalContexts(const Context &remove, const Context &add);
- static void addAdditionalContext(const Context &context);
+ static void updateAdditionalContexts(const Context &remove, const Context &add,
+ ContextPriority priority = ContextPriority::Low);
+ static void addAdditionalContext(const Context &context,
+ ContextPriority priority = ContextPriority::Low);
static void removeAdditionalContext(const Context &context);
static void addContextObject(IContext *context);
static void removeContextObject(IContext *context);
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index ddb32436e3..1c6ab39548 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -112,7 +112,7 @@ enum { debugMainWindow = 0 };
MainWindow::MainWindow() :
AppMainWindow(),
m_coreImpl(new ICore(this)),
- m_additionalContexts(Constants::C_GLOBAL),
+ m_lowPrioAdditionalContexts(Constants::C_GLOBAL),
m_settingsDatabase(new SettingsDatabase(QFileInfo(PluginManager::settings()->fileName()).path(),
QLatin1String("QtCreator"),
this)),
@@ -985,23 +985,27 @@ void MainWindow::writeSettings()
m_navigationWidget->saveSettings(settings);
}
-void MainWindow::updateAdditionalContexts(const Context &remove, const Context &add)
+void MainWindow::updateAdditionalContexts(const Context &remove, const Context &add,
+ ICore::ContextPriority priority)
{
foreach (const Id id, remove) {
if (!id.isValid())
continue;
-
- int index = m_additionalContexts.indexOf(id);
+ int index = m_lowPrioAdditionalContexts.indexOf(id);
+ if (index != -1)
+ m_lowPrioAdditionalContexts.removeAt(index);
+ index = m_highPrioAdditionalContexts.indexOf(id);
if (index != -1)
- m_additionalContexts.removeAt(index);
+ m_highPrioAdditionalContexts.removeAt(index);
}
foreach (const Id id, add) {
if (!id.isValid())
continue;
-
- if (!m_additionalContexts.contains(id))
- m_additionalContexts.prepend(id);
+ Context &cref = (priority == ICore::ContextPriority::High ? m_highPrioAdditionalContexts
+ : m_lowPrioAdditionalContexts);
+ if (!cref.contains(id))
+ cref.prepend(id);
}
updateContext();
@@ -1009,12 +1013,12 @@ void MainWindow::updateAdditionalContexts(const Context &remove, const Context &
void MainWindow::updateContext()
{
- Context contexts;
+ Context contexts = m_highPrioAdditionalContexts;
foreach (IContext *context, m_activeContext)
contexts.add(context->context());
- contexts.add(m_additionalContexts);
+ contexts.add(m_lowPrioAdditionalContexts);
Context uniquecontexts;
for (int i = 0; i < contexts.size(); ++i) {
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index b931f2652c..dff6096f81 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -103,7 +103,8 @@ public:
IContext * currentContextObject() const;
QStatusBar *statusBar() const;
- void updateAdditionalContexts(const Context &remove, const Context &add);
+ void updateAdditionalContexts(const Context &remove, const Context &add,
+ ICore::ContextPriority priority);
void setSuppressNavigationWidget(bool suppress);
@@ -151,7 +152,8 @@ private:
void writeSettings();
ICore *m_coreImpl;
- Context m_additionalContexts;
+ Context m_highPrioAdditionalContexts;
+ Context m_lowPrioAdditionalContexts;
SettingsDatabase *m_settingsDatabase;
mutable QPrinter *m_printer;
WindowSupport *m_windowSupport;
diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp
index f5e5e5214d..94ed9efa9c 100644
--- a/src/plugins/cppeditor/cpphoverhandler.cpp
+++ b/src/plugins/cppeditor/cpphoverhandler.cpp
@@ -119,7 +119,6 @@ void CppHoverHandler::decorateToolTip()
prefix = QLatin1String("enum ");
setToolTip(prefix + help.helpId());
}
- addF1ToToolTip();
}
}
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index b8a83150c2..c51d5aa721 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -78,6 +78,7 @@
#include <utils/qtcassert.h>
#include <utils/styledbar.h>
#include <utils/theme/theme.h>
+#include <utils/tooltip/tooltip.h>
#include <QDir>
#include <QFileInfo>
@@ -101,6 +102,7 @@
using namespace Help::Internal;
static const char kExternalWindowStateKey[] = "Help/ExternalWindowState";
+static const char kToolTipHelpContext[] = "Help.ToolTip";
using namespace Core;
using namespace Utils;
@@ -169,6 +171,13 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
connect(HelpManager::instance(), SIGNAL(collectionFileChanged()), this,
SLOT(setupHelpEngineIfNeeded()));
+ connect(ToolTip::instance(), &ToolTip::shown, ICore::instance(), []() {
+ ICore::addAdditionalContext(Context(kToolTipHelpContext), ICore::ContextPriority::High);
+ });
+ connect(ToolTip::instance(), &ToolTip::hidden,ICore::instance(), []() {
+ ICore::removeAdditionalContext(Context(kToolTipHelpContext));
+ });
+
Command *cmd;
QAction *action;
@@ -185,7 +194,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
connect(action, SIGNAL(triggered()), this, SLOT(activateIndex()));
action = new QAction(tr("Context Help"), this);
- cmd = ActionManager::registerAction(action, Help::Constants::CONTEXT_HELP);
+ cmd = ActionManager::registerAction(action, Help::Constants::CONTEXT_HELP,
+ Context(kToolTipHelpContext, Core::Constants::C_GLOBAL));
ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
cmd->setDefaultKeySequence(QKeySequence(Qt::Key_F1));
connect(action, SIGNAL(triggered()), this, SLOT(showContextHelp()));
@@ -560,40 +570,43 @@ static QUrl findBestLink(const QMap<QString, QUrl> &links, QString *highlightId)
void HelpPlugin::showContextHelp()
{
// Find out what to show
- QMap<QString, QUrl> links;
- QString idFromContext;
- if (IContext *context = ICore::currentContextObject()) {
- idFromContext = context->contextHelpId();
- links = HelpManager::linksForIdentifier(idFromContext);
- // Maybe the id is already an URL
- if (links.isEmpty() && LocalHelpManager::isValidUrl(idFromContext))
- links.insert(idFromContext, idFromContext);
- }
+ QString contextHelpId = Utils::ToolTip::contextHelpId();
+ IContext *context = ICore::currentContextObject();
+ if (contextHelpId.isEmpty() && context)
+ contextHelpId = context->contextHelpId();
+
+ // get the viewer after getting the help id,
+ // because a new window might be opened and therefore focus be moved
+ HelpViewer *viewer = viewerForContextHelp();
+ QTC_ASSERT(viewer, return);
- if (HelpViewer *viewer = viewerForContextHelp()) {
- QUrl source = findBestLink(links, &m_contextHelpHighlightId);
- if (!source.isValid()) {
- // No link found or no context object
- viewer->setSource(QUrl(Help::Constants::AboutBlank));
- viewer->setHtml(tr("<html><head><title>No Documentation</title>"
- "</head><body><br/><center>"
- "<font color=\"%1\"><b>%2</b></font><br/>"
- "<font color=\"%3\">No documentation available.</font>"
- "</center></body></html>")
- .arg(creatorTheme()->color(Theme::TextColorNormal).name())
- .arg(idFromContext)
- .arg(creatorTheme()->color(Theme::TextColorNormal).name()));
+ QMap<QString, QUrl> links = HelpManager::linksForIdentifier(contextHelpId);
+ // Maybe the id is already an URL
+ if (links.isEmpty() && LocalHelpManager::isValidUrl(contextHelpId))
+ links.insert(contextHelpId, contextHelpId);
+
+ QUrl source = findBestLink(links, &m_contextHelpHighlightId);
+ if (!source.isValid()) {
+ // No link found or no context object
+ viewer->setSource(QUrl(Help::Constants::AboutBlank));
+ viewer->setHtml(tr("<html><head><title>No Documentation</title>"
+ "</head><body><br/><center>"
+ "<font color=\"%1\"><b>%2</b></font><br/>"
+ "<font color=\"%3\">No documentation available.</font>"
+ "</center></body></html>")
+ .arg(creatorTheme()->color(Theme::TextColorNormal).name())
+ .arg(contextHelpId)
+ .arg(creatorTheme()->color(Theme::TextColorNormal).name()));
+ } else {
+ const QUrl &oldSource = viewer->source();
+ if (source != oldSource) {
+ viewer->stop();
+ viewer->setSource(source); // triggers loadFinished which triggers id highlighting
} else {
- const QUrl &oldSource = viewer->source();
- if (source != oldSource) {
- viewer->stop();
- viewer->setSource(source); // triggers loadFinished which triggers id highlighting
- } else {
- viewer->scrollToAnchor(source.fragment());
- }
- viewer->setFocus();
- ICore::raiseWindow(viewer);
+ viewer->scrollToAnchor(source.fragment());
}
+ viewer->setFocus();
+ ICore::raiseWindow(viewer);
}
}
diff --git a/src/plugins/texteditor/basehoverhandler.cpp b/src/plugins/texteditor/basehoverhandler.cpp
index 08e1bbcdb3..b76250a422 100644
--- a/src/plugins/texteditor/basehoverhandler.cpp
+++ b/src/plugins/texteditor/basehoverhandler.cpp
@@ -82,13 +82,6 @@ void BaseHoverHandler::appendToolTip(const QString &extension)
m_toolTip.append(extension);
}
-void BaseHoverHandler::addF1ToToolTip()
-{
- m_toolTip = QString::fromLatin1("<table><tr><td valign=middle>%1</td><td>&nbsp;&nbsp;"
- "<img src=\":/texteditor/images/f1.png\"></td>"
- "</tr></table>").arg(m_toolTip);
-}
-
void BaseHoverHandler::setIsDiagnosticTooltip(bool isDiagnosticTooltip)
{
m_diagnosticTooltip = isDiagnosticTooltip;
@@ -133,7 +126,6 @@ void BaseHoverHandler::decorateToolTip()
if (!contents.isEmpty()) {
setToolTip(toolTip().toHtmlEscaped());
appendToolTip(contents);
- addF1ToToolTip();
}
}
}
@@ -143,7 +135,9 @@ void BaseHoverHandler::operateTooltip(TextEditorWidget *editorWidget, const QPoi
if (m_toolTip.isEmpty())
Utils::ToolTip::hide();
else
- Utils::ToolTip::show(point, m_toolTip, editorWidget);
+ Utils::ToolTip::show(point, m_toolTip, editorWidget, m_lastHelpItemIdentified.isValid()
+ ? m_lastHelpItemIdentified.helpId()
+ : QString());
}
} // namespace TextEditor
diff --git a/src/plugins/texteditor/basehoverhandler.h b/src/plugins/texteditor/basehoverhandler.h
index 00accf05b7..eff2b75a06 100644
--- a/src/plugins/texteditor/basehoverhandler.h
+++ b/src/plugins/texteditor/basehoverhandler.h
@@ -59,8 +59,6 @@ protected:
void appendToolTip(const QString &extension);
const QString &toolTip() const;
- void addF1ToToolTip();
-
void setIsDiagnosticTooltip(bool isDiagnosticTooltip);
bool isDiagnosticTooltip() const;
diff --git a/src/plugins/texteditor/images/f1.png b/src/plugins/texteditor/images/f1.png
deleted file mode 100644
index 6332719c07..0000000000
--- a/src/plugins/texteditor/images/f1.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/texteditor/images/f1.svg b/src/plugins/texteditor/images/f1.svg
deleted file mode 100644
index 468594cb77..0000000000
--- a/src/plugins/texteditor/images/f1.svg
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="24"
- height="24"
- id="svg2411"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="f1.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2413">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient001"
- id="linearGradient3201"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.6285394,0,0,3.6290105,-1258.7023,-359.38242)"
- spreadMethod="pad"
- x1="375.31006"
- y1="88.869247"
- x2="466.8873"
- y2="180.4346" />
- <linearGradient
- id="linearGradient001">
- <stop
- id="stop608"
- offset="0.000000"
- style="stop-color:#cfcfcf;stop-opacity:1;" />
- <stop
- id="stop609"
- offset="1.000000"
- style="stop-color:#efefef;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient001"
- id="linearGradient3207"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.8401167,0,0,3.8424815,-1348.031,-388.46373)"
- spreadMethod="pad"
- x1="470.3931"
- y1="136.23064"
- x2="374.90988"
- y2="136.23064" />
- <linearGradient
- id="linearGradient002">
- <stop
- id="stop566"
- offset="0.000000"
- style="stop-color:#9d9d9f;stop-opacity:1;" />
- <stop
- id="stop567"
- offset="1.000000"
- style="stop-color:#e5e5e5;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient002"
- id="linearGradient2419"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.6611924,0,0,3.6628816,-1231.7325,-383.72165)"
- spreadMethod="pad"
- x1="471.00525"
- y1="201.05208"
- x2="348.94803"
- y2="79.051147" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2419" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.2"
- inkscape:cx="22.801892"
- inkscape:cy="10.456883"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="963"
- inkscape:window-height="667"
- inkscape:window-x="207"
- inkscape:window-y="207" />
- <metadata
- id="metadata2416">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Ebene 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- transform="matrix(4.3636364e-2,0,0,4.3636364e-2,0,6.1090908)"
- id="g2404">
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- y="-140"
- x="2.4832567e-14"
- width="550"
- style="font-size:12px;fill:#b0b0b0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.81658993pt;stroke-opacity:1"
- ry="81.511414"
- id="rect621"
- height="550" />
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png"
- y="-128.55069"
- x="11.458333"
- width="527.08331"
- style="font-size:12px;fill:url(#linearGradient2419);fill-rule:evenodd;stroke:none;stroke-width:1.03125;stroke-miterlimit:4;stroke-dasharray:none"
- ry="78.116447"
- id="rect2417"
- height="527.09235" />
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png"
- y="-71.25"
- x="68.950378"
- width="412.29962"
- style="font-size:12px;fill:url(#linearGradient3207);fill-rule:evenodd;stroke:none;stroke-width:2.4979167;stroke-miterlimit:4;stroke-dasharray:none"
- ry="39.785442"
- rx="34.514793"
- id="rect3205"
- height="412.5" />
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png"
- y="-59.791668"
- x="80.208336"
- width="389.58334"
- style="font-size:12px;fill:url(#linearGradient3201);fill-rule:evenodd;stroke:none;stroke-width:25.41458321;stroke-miterlimit:4;stroke-dasharray:none"
- ry="25.400656"
- rx="22.902761"
- id="rect3199"
- height="389.58334" />
- <path
- sodipodi:nodetypes="ccccccccccccccccsccc"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png"
- id="text3219"
- d="M 137.5,157.91667 L 137.5,-2.4752517 L 229.16667,-2.5 L 229.16667,20.416667 L 160.41667,20.416667 L 160.41667,66.25 L 206.25,66.25 L 206.25,89.166667 L 160.41667,89.166667 L 160.41667,157.91667 L 137.5,157.91667 z M 320.89291,157.91667 L 297.91667,157.91667 L 297.91667,40.04211 C 284.08134,48.574912 275.21133,59.2993 252.08333,66.25 L 252.08333,47.355939 C 263.04835,44.807707 286.00818,25.67917 293.48823,18.312241 C 300.9682,10.945593 306.26379,4.4293192 309.375,-2.5 L 320.83333,-2.5 L 320.89291,157.91667 z"
- style="font-size:261.65481567px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" />
- </g>
- </g>
-</svg>
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 582b52fdcb..ea968f8e6a 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -3127,7 +3127,7 @@ bool TextEditorWidget::viewportEvent(QEvent *event)
RefactorMarker refactorMarker = d->m_refactorOverlay->markerAt(pos);
if (refactorMarker.isValid() && !refactorMarker.tooltip.isEmpty()) {
ToolTip::show(he->globalPos(), refactorMarker.tooltip,
- viewport(), refactorMarker.rect);
+ viewport(), QString(), refactorMarker.rect);
return true;
}
diff --git a/src/plugins/texteditor/texteditor.qrc b/src/plugins/texteditor/texteditor.qrc
index c58205cd2c..7f829e9159 100644
--- a/src/plugins/texteditor/texteditor.qrc
+++ b/src/plugins/texteditor/texteditor.qrc
@@ -4,6 +4,5 @@
<file>images/finddirectory.png</file>
<file>images/refactormarker.png</file>
<file>images/snippet.png</file>
- <file>images/f1.png</file>
</qresource>
</RCC>