From 8c59160792cd9d1ef4a2273cd6058ad105b92ea5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Mon, 26 Jan 2009 15:51:14 +0100
Subject: [PATCH] Fix SIGNAL/SLOT completion with spaces after opening brace

Spaces after the opening brace would cause SIGNAL/SLOT completion to be
disabled along with function completion. Now function completion is
checked at a later stage.
---
 src/plugins/cpptools/cppcodecompletion.cpp | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 573c9a25466..824b7b4b1cb 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;
+            }
         }
     }
 
-- 
GitLab