summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpphoverhandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cpphoverhandler.cpp')
-rw-r--r--src/plugins/cpptools/cpphoverhandler.cpp39
1 files changed, 12 insertions, 27 deletions
diff --git a/src/plugins/cpptools/cpphoverhandler.cpp b/src/plugins/cpptools/cpphoverhandler.cpp
index 3969065ff7..752f50725b 100644
--- a/src/plugins/cpptools/cpphoverhandler.cpp
+++ b/src/plugins/cpptools/cpphoverhandler.cpp
@@ -30,6 +30,7 @@
#include <coreplugin/helpmanager.h>
#include <texteditor/texteditor.h>
+#include <utils/optional.h>
#include <utils/textutils.h>
#include <utils/executeondestruction.h>
@@ -78,47 +79,31 @@ void CppHoverHandler::identifyMatch(TextEditorWidget *editorWidget, int pos, Rep
CppElementEvaluator evaluator(editorWidget);
evaluator.setTextCursor(tc);
evaluator.execute();
+ QString tip;
if (evaluator.hasDiagnosis()) {
- setToolTip(evaluator.diagnosis());
+ tip += evaluator.diagnosis();
setPriority(Priority_Diagnostic);
- } else if (evaluator.identifiedCppElement()) {
+ }
+ if (evaluator.identifiedCppElement()) {
const QSharedPointer<CppElement> &cppElement = evaluator.cppElement();
- if (priority() != Priority_Diagnostic) {
- setToolTip(cppElement->tooltip);
- setPriority(cppElement->tooltip.isEmpty() ? Priority_None : Priority_Tooltip);
- }
QStringList candidates = cppElement->helpIdCandidates;
candidates.removeDuplicates();
+ Utils::optional<HelpItem> helpItem;
foreach (const QString &helpId, candidates) {
if (helpId.isEmpty())
continue;
-
const QMap<QString, QUrl> helpLinks = HelpManager::linksForIdentifier(helpId);
if (!helpLinks.isEmpty()) {
- setLastHelpItemIdentified(HelpItem(helpId,
- cppElement->helpMark,
- cppElement->helpCategory,
- helpLinks));
+ helpItem.emplace(helpId, cppElement->helpMark, cppElement->helpCategory, helpLinks);
break;
}
}
+ if (helpItem)
+ setLastHelpItemIdentified(helpItem.value()); // tool tip appended by decorateToolTip
+ else
+ tip += cppElement->tooltip;
}
-}
-
-void CppHoverHandler::decorateToolTip()
-{
- if (Qt::mightBeRichText(toolTip()))
- setToolTip(toolTip().toHtmlEscaped());
-
- if (priority() == Priority_Diagnostic)
- return;
-
- const HelpItem &help = lastHelpItemIdentified();
- if (help.isValid()) {
- const QString text = tooltipTextForHelpItem(help);
- if (!text.isEmpty())
- setToolTip(text);
- }
+ setToolTip(tip);
}
} // namespace CppTools