forked from qt-creator/qt-creator
Clang: Show help with F1 even if there is a diagnostic
...at that particular location. For example, the code new QSignalMapper; produced a deprecated warning with Qt 5.12 and F1 led to "No documentation available" as the diagnostic was always prioritized. Task-number: QTCREATORBUG-21686 Change-Id: Icf03000fb6b9de04e467e758da6167018d154a21 Reviewed-by: Marco Bubke <marco.bubke@qt.io> Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -114,7 +114,7 @@ void ClangHoverHandler::identifyMatch(TextEditorWidget *editorWidget,
|
|||||||
m_cursorPosition = -1;
|
m_cursorPosition = -1;
|
||||||
|
|
||||||
// Check for diagnostics (sync)
|
// Check for diagnostics (sync)
|
||||||
if (editorDocumentProcessorHasDiagnosticAt(editorWidget, pos)) {
|
if (!isContextHelpRequest() && editorDocumentProcessorHasDiagnosticAt(editorWidget, pos)) {
|
||||||
qCDebug(hoverLog) << "Checking for diagnostic at" << pos;
|
qCDebug(hoverLog) << "Checking for diagnostic at" << pos;
|
||||||
setPriority(Priority_Diagnostic);
|
setPriority(Priority_Diagnostic);
|
||||||
m_cursorPosition = pos;
|
m_cursorPosition = pos;
|
||||||
|
@@ -73,6 +73,8 @@ void BaseHoverHandler::contextHelpId(TextEditorWidget *widget,
|
|||||||
int pos,
|
int pos,
|
||||||
const Core::IContext::HelpIdCallback &callback)
|
const Core::IContext::HelpIdCallback &callback)
|
||||||
{
|
{
|
||||||
|
m_isContextHelpRequest = true;
|
||||||
|
|
||||||
// If the tooltip is visible and there is a help match, this match is used to update
|
// If the tooltip is visible and there is a help match, this match is used to update
|
||||||
// the help id. Otherwise, let the identification process happen.
|
// the help id. Otherwise, let the identification process happen.
|
||||||
if (!Utils::ToolTip::isVisible() || !lastHelpItemIdentified().isValid()) {
|
if (!Utils::ToolTip::isVisible() || !lastHelpItemIdentified().isValid()) {
|
||||||
@@ -83,6 +85,8 @@ void BaseHoverHandler::contextHelpId(TextEditorWidget *widget,
|
|||||||
} else {
|
} else {
|
||||||
propagateHelpId(widget, callback);
|
propagateHelpId(widget, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_isContextHelpRequest = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseHoverHandler::setToolTip(const QString &tooltip)
|
void BaseHoverHandler::setToolTip(const QString &tooltip)
|
||||||
@@ -105,6 +109,11 @@ const HelpItem &BaseHoverHandler::lastHelpItemIdentified() const
|
|||||||
return m_lastHelpItemIdentified;
|
return m_lastHelpItemIdentified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BaseHoverHandler::isContextHelpRequest() const
|
||||||
|
{
|
||||||
|
return m_isContextHelpRequest;
|
||||||
|
}
|
||||||
|
|
||||||
void BaseHoverHandler::propagateHelpId(TextEditorWidget *widget,
|
void BaseHoverHandler::propagateHelpId(TextEditorWidget *widget,
|
||||||
const Core::IContext::HelpIdCallback &callback)
|
const Core::IContext::HelpIdCallback &callback)
|
||||||
{
|
{
|
||||||
|
@@ -71,6 +71,8 @@ protected:
|
|||||||
void setLastHelpItemIdentified(const HelpItem &help);
|
void setLastHelpItemIdentified(const HelpItem &help);
|
||||||
const HelpItem &lastHelpItemIdentified() const;
|
const HelpItem &lastHelpItemIdentified() const;
|
||||||
|
|
||||||
|
bool isContextHelpRequest() const;
|
||||||
|
|
||||||
void propagateHelpId(TextEditorWidget *widget, const Core::IContext::HelpIdCallback &callback);
|
void propagateHelpId(TextEditorWidget *widget, const Core::IContext::HelpIdCallback &callback);
|
||||||
|
|
||||||
// identifyMatch() is required to report a priority by using the "report" callback.
|
// identifyMatch() is required to report a priority by using the "report" callback.
|
||||||
@@ -87,6 +89,7 @@ private:
|
|||||||
QString m_toolTip;
|
QString m_toolTip;
|
||||||
HelpItem m_lastHelpItemIdentified;
|
HelpItem m_lastHelpItemIdentified;
|
||||||
int m_priority = -1;
|
int m_priority = -1;
|
||||||
|
bool m_isContextHelpRequest = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace TextEditor
|
} // namespace TextEditor
|
||||||
|
Reference in New Issue
Block a user