From d702119dca0600f4e75d08984733d0ceb370c8d9 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 26 May 2010 15:14:50 +0200
Subject: [PATCH] Revert "Sort the items lazily."

This reverts commit 13a721d985aa04de3ded3c3049179512469ec0f7.
---
 src/plugins/cpptools/cppcodecompletion.cpp    | 29 ++++---------------
 src/plugins/cpptools/cppcodecompletion.h      |  2 --
 src/plugins/texteditor/icompletioncollector.h |  3 +-
 3 files changed, 6 insertions(+), 28 deletions(-)

diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index beecf56a8b5..88ca3b75587 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -69,7 +69,6 @@
 #include <QtCore/QDebug>
 #include <QtCore/QMap>
 #include <QtCore/QFile>
-#include <QtCore/QtConcurrentRun>
 #include <QtGui/QAction>
 #include <QtGui/QApplication>
 #include <QtGui/QDesktopWidget>
@@ -653,22 +652,11 @@ bool CppCodeCompletion::triggersCompletion(TextEditor::ITextEditable *editor)
     return false;
 }
 
-static QList<TextEditor::CompletionItem> sortCompletionItems(QList<TextEditor::CompletionItem> items)
-{
-    qStableSort(items.begin(), items.end(), CppCodeCompletion::completionItemLessThan);
-    return items;
-}
-
 int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 {
     int index = startCompletionHelper(editor);
-    if (index != -1) {
-        m_sortedCompletions = QtConcurrent::run(sortCompletionItems, m_completions);
-
-        if (m_completions.size() < 1000)
-            m_completions = m_sortedCompletions;
-    }
-
+    if (index != -1)
+        qStableSort(m_completions.begin(), m_completions.end(), completionItemLessThan);
     return index;
 }
 
@@ -1580,14 +1568,8 @@ void CppCodeCompletion::completions(QList<TextEditor::CompletionItem> *completio
 
     const QString key = m_editor->textAt(m_startPosition, length);
 
-    QList<TextEditor::CompletionItem> currentCompletion;
-    if (m_sortedCompletions.isFinished())
-        currentCompletion = m_sortedCompletions;
-    else
-        currentCompletion = m_completions;
-
     if (length == 0)
-        *completions = currentCompletion;
+        *completions = m_completions;
     else if (length > 0) {
         /* Close on the trailing slash for include completion, to enable the slash to
          * trigger a new completion list. */
@@ -1596,12 +1578,12 @@ void CppCodeCompletion::completions(QList<TextEditor::CompletionItem> *completio
             return;
 
         if (m_completionOperator != T_LPAREN) {
-            filter(currentCompletion, completions, key);
+            filter(m_completions, completions, key);
 
         } else if (m_completionOperator == T_LPAREN ||
                    m_completionOperator == T_SIGNAL ||
                    m_completionOperator == T_SLOT) {
-            foreach (const TextEditor::CompletionItem &item, currentCompletion) {
+            foreach (const TextEditor::CompletionItem &item, m_completions) {
                 if (item.text.startsWith(key, Qt::CaseInsensitive)) {
                     completions->append(item);
                 }
@@ -1760,7 +1742,6 @@ bool CppCodeCompletion::partiallyComplete(const QList<TextEditor::CompletionItem
 
 void CppCodeCompletion::cleanup()
 {
-    m_sortedCompletions.cancel();
     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 806717d6917..f7d1667f761 100644
--- a/src/plugins/cpptools/cppcodecompletion.h
+++ b/src/plugins/cpptools/cppcodecompletion.h
@@ -40,7 +40,6 @@
 
 #include <QtCore/QObject>
 #include <QtCore/QPointer>
-#include <QtCore/QFuture>
 
 QT_BEGIN_NAMESPACE
 class QTextCursor;
@@ -150,7 +149,6 @@ private:
     QPointer<FunctionArgumentWidget> m_functionArgumentWidget;
 
     QList<TextEditor::CompletionItem> m_completions;
-    QFuture<QList<TextEditor::CompletionItem> > m_sortedCompletions;
 };
 
 } // namespace Internal
diff --git a/src/plugins/texteditor/icompletioncollector.h b/src/plugins/texteditor/icompletioncollector.h
index cb6d1a1c863..e78ad83b829 100644
--- a/src/plugins/texteditor/icompletioncollector.h
+++ b/src/plugins/texteditor/icompletioncollector.h
@@ -131,14 +131,13 @@ public:
                 QList<TextEditor::CompletionItem> *filteredItems,
                 const QString &key);
 
-    static bool completionItemLessThan(const CompletionItem &item, const CompletionItem &other);
-
 public slots:
     void setCompletionSettings(const TextEditor::CompletionSettings &);
 
 protected:
     static bool compareChar(const QChar &item, const QChar &other);
     static bool lessThan(const QString &item, const QString &other);
+    static bool completionItemLessThan(const CompletionItem &item, const CompletionItem &other);
 
 private:
     Internal::ICompletionCollectorPrivate *m_d;
-- 
GitLab