From 0a99fef5a390271d988537dd587ea826631a4475 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Thu, 26 Mar 2009 15:40:53 +0100
Subject: [PATCH] Avoid automatically inserting unwanted closing parentheses

This is for the case of function overloads where one overload takes no
parameters. Solved by keeping track of the duplicate count.

Done with Roberto Raggi.
---
 src/plugins/cpptools/cppcodecompletion.cpp    | 5 +++--
 src/plugins/texteditor/completionsupport.cpp  | 2 ++
 src/plugins/texteditor/icompletioncollector.h | 2 ++
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 35b751104d3..1be7e410012 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -1224,8 +1224,9 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item)
                     extraChars += QLatin1Char('(');
 
                     // If the function takes no arguments, automatically place the closing parenthesis
-                    if (function->argumentCount() == 0 || (function->argumentCount() == 1 &&
-                                                           function->argumentAt(0)->type()->isVoidType())) {
+                    if (item.m_duplicateCount == 0 && (function->argumentCount() == 0 ||
+                                                       (function->argumentCount() == 1 &&
+                                                        function->argumentAt(0)->type()->isVoidType()))) {
                         extraChars += QLatin1Char(')');
 
                         // If the function doesn't return anything, automatically place the semicolon,
diff --git a/src/plugins/texteditor/completionsupport.cpp b/src/plugins/texteditor/completionsupport.cpp
index 53de9ee66e1..2e456193ad5 100644
--- a/src/plugins/texteditor/completionsupport.cpp
+++ b/src/plugins/texteditor/completionsupport.cpp
@@ -186,6 +186,8 @@ QList<CompletionItem> CompletionSupport::getCompletions() const
         if (item.m_text != lastKey) {
             uniquelist.append(item);
             lastKey = item.m_text;
+        } else {
+            uniquelist.last().m_duplicateCount++;
         }
     }
 
diff --git a/src/plugins/texteditor/icompletioncollector.h b/src/plugins/texteditor/icompletioncollector.h
index c8c035802e4..49d70f18288 100644
--- a/src/plugins/texteditor/icompletioncollector.h
+++ b/src/plugins/texteditor/icompletioncollector.h
@@ -46,6 +46,7 @@ struct CompletionItem
 {
     CompletionItem(ICompletionCollector *collector = 0)
         : m_relevance(0),
+          m_duplicateCount(0),
           m_collector(collector)
     { }
 
@@ -60,6 +61,7 @@ struct CompletionItem
     QIcon m_icon;
     QVariant m_data;
     int m_relevance;
+    int m_duplicateCount;
     ICompletionCollector *m_collector;
 };
 
-- 
GitLab