summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcompletionassist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppcompletionassist.cpp')
-rw-r--r--src/plugins/cpptools/cppcompletionassist.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index b1daa94c21..4a1004aceb 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -476,8 +476,10 @@ private:
void CppAssistProposal::makeCorrection(BaseTextEditor *editor)
{
+ const int oldPosition = editor->position();
editor->setCursorPosition(basePosition() - 1);
editor->replace(1, QLatin1String("->"));
+ editor->setCursorPosition(oldPosition + 1);
moveBasePosition(1);
}
@@ -604,6 +606,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
// ----------------------------
@@ -1639,6 +1659,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());