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