summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-07-19 10:25:55 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2010-07-19 10:32:25 +0200
commit7de836bf851b144ead33a5aea685ed92b9e928ea (patch)
treef5ef2ab645f3d370cda21c2db488b01a8d505fee /src/plugins/cpptools/cppcodecompletion.cpp
parent615381a5b12449438cfd0f546e043f7a7d8c0609 (diff)
downloadqt-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.cpp22
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