diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 573c9a254666d5b803efb479e4a60eee8b87ab83..824b7b4b1cb1415a350e1475b862e232afa57be2 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -435,15 +435,15 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor) m_startPosition = findStartOfName(editor); m_completionOperator = T_EOF_SYMBOL; - int endOfExpression = m_startPosition; + int endOfOperator = m_startPosition; // Skip whitespace preceding this position - while (editor->characterAt(endOfExpression - 1).isSpace()) - --endOfExpression; + while (editor->characterAt(endOfOperator - 1).isSpace()) + --endOfOperator; - endOfExpression = startOfOperator(editor, endOfExpression, - &m_completionOperator, - /*want function call =*/ editor->position() == endOfExpression); + int endOfExpression = startOfOperator(editor, endOfOperator, + &m_completionOperator, + /*want function call =*/ true); Core::IFile *file = editor->file(); QString fileName = file->fileName(); @@ -464,6 +464,11 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor) m_completionOperator = T_SIGNAL; else if (expression.endsWith(QLatin1String("SLOT"))) m_completionOperator = T_SLOT; + else if (editor->position() != endOfOperator) { + // We don't want a function completion when the cursor isn't at the opening brace + expression.clear(); + m_completionOperator = T_EOF_SYMBOL; + } } }