CppTools: Hide "QPrivateSignal" on signal completion (Qt5)

See also http://woboq.com/blog/how-qt-signals-slots-work-part2-qt5.html

Task-number: QTCREATORBUG-8540
Change-Id: Iccad837d7a0da982e7d7a1eda95ff1828cf1dce6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
This commit is contained in:
Nikolai Kosjar
2013-07-30 11:56:50 +02:00
parent 05c6a5724f
commit 8d283ffd16
3 changed files with 55 additions and 0 deletions

View File

@@ -602,6 +602,24 @@ Function *asFunctionOrTemplateFunctionType(FullySpecifiedType ty)
return 0;
}
bool isQPrivateSignal(const Symbol *symbol)
{
if (!symbol)
return false;
static Identifier qPrivateSignalIdentifier("QPrivateSignal", 14);
if (FullySpecifiedType type = symbol->type()) {
if (NamedType *namedType = type->asNamedType()) {
if (const Name *name = namedType->name()) {
if (name->isEqualTo(&qPrivateSignalIdentifier))
return true;
}
}
}
return false;
}
} // Anonymous
// ----------------------------
@@ -1620,6 +1638,8 @@ bool CppCompletionAssistProcessor::completeQtMethod(const QList<CPlusPlus::Looku
signature += QLatin1Char('(');
for (unsigned i = 0; i < count; ++i) {
Symbol *arg = fun->argumentAt(i);
if (isQPrivateSignal(arg))
continue;
if (i != 0)
signature += QLatin1Char(',');
signature += o.prettyType(arg->type());