forked from qt-creator/qt-creator
Clangd: Fix autocompletion for old style SIGNAL and SLOT
Fixes: QTCREATORBUG-20737 Change-Id: If6d3c6ea5924537386eca81d90d4bb1e8f1a1466 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -1163,22 +1163,43 @@ void CppEditorWidget::updateSemanticInfo(const SemanticInfo &semanticInfo,
|
||||
updateFunctionDeclDefLink();
|
||||
}
|
||||
|
||||
bool CppEditorWidget::isOldStyleSignalOrSlot() const
|
||||
{
|
||||
QTextCursor tc(textCursor());
|
||||
const QString content = textDocument()->plainText();
|
||||
|
||||
return CppEditor::CppModelManager::instance()
|
||||
->getSignalSlotType(textDocument()->filePath().toString(),
|
||||
content.toUtf8(),
|
||||
tc.position())
|
||||
== CppEditor::SignalSlotType::OldStyleSignal;
|
||||
}
|
||||
|
||||
AssistInterface *CppEditorWidget::createAssistInterface(AssistKind kind, AssistReason reason) const
|
||||
{
|
||||
if (kind == Completion || kind == FunctionHint) {
|
||||
CppCompletionAssistProvider * const cap = kind == Completion
|
||||
? qobject_cast<CppCompletionAssistProvider *>(cppEditorDocument()->completionAssistProvider())
|
||||
: qobject_cast<CppCompletionAssistProvider *>(cppEditorDocument()->functionHintAssistProvider());
|
||||
if (cap) {
|
||||
|
||||
auto getFeatures = [this]() {
|
||||
LanguageFeatures features = LanguageFeatures::defaultFeatures();
|
||||
if (Document::Ptr doc = d->m_lastSemanticInfo.doc)
|
||||
features = doc->languageFeatures();
|
||||
features.objCEnabled |= cppEditorDocument()->isObjCEnabled();
|
||||
return features;
|
||||
};
|
||||
|
||||
if (cap)
|
||||
return cap->createAssistInterface(textDocument()->filePath(),
|
||||
this,
|
||||
features,
|
||||
getFeatures(),
|
||||
reason);
|
||||
} else {
|
||||
else {
|
||||
if (isOldStyleSignalOrSlot())
|
||||
return CppModelManager::instance()
|
||||
->completionAssistProvider()
|
||||
->createAssistInterface(textDocument()->filePath(), this, getFeatures(), reason);
|
||||
return TextEditorWidget::createAssistInterface(kind, reason);
|
||||
}
|
||||
} else if (kind == QuickFix) {
|
||||
|
||||
Reference in New Issue
Block a user