From 9e89f36cd93633c02f7767a589921bc7c4da8e23 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 26 May 2010 12:46:41 +0200
Subject: [PATCH] There's no need to sort after filtering the completion.

---
 src/plugins/cpptools/cppcodecompletion.cpp | 8 +++++++-
 src/plugins/cpptools/cppcodecompletion.h   | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 09166ef0528..f89d5df1057 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -445,6 +445,7 @@ CppCodeCompletion::CppCodeCompletion(CppModelManager *manager)
       m_completionOperator(T_EOF_SYMBOL),
       m_objcEnabled(true)
 {
+    m_sorted = false;
 }
 
 QIcon CppCodeCompletion::iconForSymbol(Symbol *symbol) const
@@ -654,6 +655,7 @@ bool CppCodeCompletion::triggersCompletion(TextEditor::ITextEditable *editor)
 
 int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 {
+    m_sorted = false;
     TextEditor::BaseTextEditor *edit = qobject_cast<TextEditor::BaseTextEditor *>(editor->widget());
     if (! edit)
         return -1;
@@ -1590,7 +1592,10 @@ QList<TextEditor::CompletionItem> CppCodeCompletion::getCompletions()
 
     completions(&completionItems);
 
-    qStableSort(completionItems.begin(), completionItems.end(), completionItemLessThan);
+    if (! m_sorted) {
+        qStableSort(completionItems.begin(), completionItems.end(), completionItemLessThan);
+        m_sorted = true;
+    }
 
     // Remove duplicates
     QString lastKey;
@@ -1736,6 +1741,7 @@ bool CppCodeCompletion::partiallyComplete(const QList<TextEditor::CompletionItem
 
 void CppCodeCompletion::cleanup()
 {
+    m_sorted = false;
     m_completions.clear();
 
     // Set empty map in order to avoid referencing old versions of the documents
diff --git a/src/plugins/cpptools/cppcodecompletion.h b/src/plugins/cpptools/cppcodecompletion.h
index 39d23adf68b..432f1f298ab 100644
--- a/src/plugins/cpptools/cppcodecompletion.h
+++ b/src/plugins/cpptools/cppcodecompletion.h
@@ -147,6 +147,7 @@ private:
     QPointer<FunctionArgumentWidget> m_functionArgumentWidget;
 
     QList<TextEditor::CompletionItem> m_completions;
+    bool m_sorted;
 };
 
 } // namespace Internal
-- 
GitLab