diff options
Diffstat (limited to 'src/plugins/cpptools/cppcompletionassist.cpp')
-rw-r--r-- | src/plugins/cpptools/cppcompletionassist.cpp | 22 |
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()); |