From 1113097c377cf0ce79574f12aacda174e4c55e88 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar <nikolai.kosjar@digia.com> Date: Thu, 24 Oct 2013 14:32:14 +0200 Subject: [PATCH] TextEditor/CodeAssist: Limit automatic proposals only to completions ...since it does not make sense for TextEditor::QuickFix and TextEditor::FollowSymbol. Regarding the bug: - The bug was exposed by having "Active completion" set to *not* "Manual" in Options > Text Editor > Completion. - After choosing one item from the overrides list the cursor was positioned just right before the beginning of a function name, which is a valid activation sequence (see CodeAssistantPrivate::process())) As a consequence, a new proposal was requested. Task-number: QTCREATORBUG-10345 Change-Id: Ib0d10192863fb33c0958a9afbf76ca8e7de772f8 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> --- .../texteditor/codeassist/codeassistant.cpp | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index 9c8d342a162..81d5d2fc3dc 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -149,6 +149,7 @@ CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant) , m_completionProvider(0) , m_requestRunner(0) , m_requestProvider(0) + , m_assistKind(TextEditor::Completion) , m_proposalWidget(0) , m_receivedContentWhileWaiting(false) , m_settings(TextEditorSettings::completionSettings()) @@ -223,16 +224,20 @@ void CodeAssistantPrivate::process() stopAutomaticProposalTimer(); - if (m_settings.m_completionTrigger != ManualCompletion) { - if (CompletionAssistProvider *provider = identifyActivationSequence()) { - if (isWaitingForProposal()) - cancelCurrentRequest(); - requestProposal(ActivationCharacter, Completion, provider); - return; + if (m_assistKind == TextEditor::Completion) { + if (m_settings.m_completionTrigger != ManualCompletion) { + if (CompletionAssistProvider *provider = identifyActivationSequence()) { + if (isWaitingForProposal()) + cancelCurrentRequest(); + requestProposal(ActivationCharacter, Completion, provider); + return; + } } - } - startAutomaticProposalTimer(); + startAutomaticProposalTimer(); + } else { + m_assistKind = TextEditor::Completion; + } } void CodeAssistantPrivate::requestProposal(AssistReason reason, -- GitLab