diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-07-19 10:25:55 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-07-19 10:32:25 +0200 |
commit | 7de836bf851b144ead33a5aea685ed92b9e928ea (patch) | |
tree | f5ef2ab645f3d370cda21c2db488b01a8d505fee /src/plugins/cpptools/cppcodecompletion.cpp | |
parent | 615381a5b12449438cfd0f546e043f7a7d8c0609 (diff) | |
download | qt-creator-7de836bf851b144ead33a5aea685ed92b9e928ea.tar.gz |
Don't complete the current item when pressing special characters (e.g. `;') if the completion is automatically triggered.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r-- | src/plugins/cpptools/cppcodecompletion.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 44f8b861fa..e13c4f789f 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -439,7 +439,7 @@ CppCodeCompletion::CppCodeCompletion(CppModelManager *manager) m_editor(0), m_startPosition(-1), m_shouldRestartCompletion(false), - m_forcedCompletion(false), + m_automaticCompletion(false), m_completionOperator(T_EOF_SYMBOL), m_objcEnabled(true) { @@ -639,19 +639,17 @@ bool CppCodeCompletion::shouldRestartCompletion() bool CppCodeCompletion::triggersCompletion(TextEditor::ITextEditable *editor) { m_editor = editor; + m_automaticCompletion = false; const int pos = editor->position(); unsigned token = T_EOF_SYMBOL; if (startOfOperator(editor, pos, &token, /*want function call=*/ true) != pos) { if (token == T_POUND) { - if (TextEditor::BaseTextEditor *edit = qobject_cast<TextEditor::BaseTextEditor *>(editor->widget())) { - QTextCursor tc(edit->document()); - tc.setPosition(pos); - return tc.positionInBlock() == 1; - } - - return false; + int line, column; + editor->convertPosition(pos, &line, &column); + if (column != 1) + return false; } return true; @@ -676,8 +674,10 @@ bool CppCodeCompletion::triggersCompletion(TextEditor::ITextEditable *editor) const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1)); const Token tk = (tokenIdx == -1) ? Token() : tokens.at(tokenIdx); - if (!tk.isComment() && !tk.isLiteral()) + if (!tk.isComment() && !tk.isLiteral()) { + m_automaticCompletion = true; return true; + } } } } @@ -1759,6 +1759,9 @@ QList<TextEditor::CompletionItem> CppCodeCompletion::getCompletions() bool CppCodeCompletion::typedCharCompletes(const TextEditor::CompletionItem &item, QChar typedChar) { + if (m_automaticCompletion) + return false; + if (item.data.canConvert<QString>()) // snippet return false; @@ -1948,6 +1951,7 @@ bool CppCodeCompletion::partiallyComplete(const QList<TextEditor::CompletionItem void CppCodeCompletion::cleanup() { + m_automaticCompletion = false; m_completions.clear(); // Set empty map in order to avoid referencing old versions of the documents |