From 748bf0cd988c103e66919db753d40fe19a784022 Mon Sep 17 00:00:00 2001
From: Jussi Kuokkanen <jussi.kuokkanen@protonmail.com>
Date: Wed, 2 Sep 2020 13:32:57 +0300
Subject: [PATCH] rename CompletionModel to CompletionProxyModel

---
 src/CompletionProxyModel.h | 20 ++++++++++++++++++++
 src/TextInputWidget.cpp    |  4 ++--
 src/TextInputWidget.h      |  4 ++--
 3 files changed, 24 insertions(+), 4 deletions(-)
 create mode 100644 src/CompletionProxyModel.h

diff --git a/src/CompletionProxyModel.h b/src/CompletionProxyModel.h
new file mode 100644
index 000000000..ee38075e1
--- /dev/null
+++ b/src/CompletionProxyModel.h
@@ -0,0 +1,20 @@
+#pragma once
+
+// Class for showing a limited amount of completions at a time
+
+#include <QSortFilterProxyModel>
+
+class CompletionProxyModel : public QSortFilterProxyModel
+{
+public:
+        CompletionProxyModel(QAbstractItemModel *model, QObject *parent = nullptr)
+          : QSortFilterProxyModel(parent)
+        {
+                setSourceModel(model);
+        }
+        int rowCount(const QModelIndex &parent) const override
+        {
+                auto row_count = QSortFilterProxyModel::rowCount(parent);
+                return (row_count < 7) ? row_count : 7;
+        }
+};
diff --git a/src/TextInputWidget.cpp b/src/TextInputWidget.cpp
index 30589b616..b46f0e5aa 100644
--- a/src/TextInputWidget.cpp
+++ b/src/TextInputWidget.cpp
@@ -30,7 +30,7 @@
 
 #include "Cache.h"
 #include "ChatPage.h"
-#include "CompletionModel.h"
+#include "CompletionProxyModel.h"
 #include "Logging.h"
 #include "TextInputWidget.h"
 #include "Utils.h"
@@ -70,7 +70,7 @@ FilteredTextEdit::FilteredTextEdit(QWidget *parent)
         completer_->setWidget(this);
         auto model = new emoji::EmojiSearchModel(this);
         model->sort(0, Qt::AscendingOrder);
-        completer_->setModel((emoji_completion_model_ = new CompletionModel(model, this)));
+        completer_->setModel((emoji_completion_model_ = new CompletionProxyModel(model, this)));
         completer_->setModelSorting(QCompleter::UnsortedModel);
         completer_->popup()->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
         completer_->popup()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
diff --git a/src/TextInputWidget.h b/src/TextInputWidget.h
index c62a98be9..19462f70f 100644
--- a/src/TextInputWidget.h
+++ b/src/TextInputWidget.h
@@ -31,7 +31,7 @@
 
 struct SearchResult;
 
-class CompletionModel;
+class CompletionProxyModel;
 class FlatButton;
 class LoadingIndicator;
 class QCompleter;
@@ -72,7 +72,7 @@ protected:
 
 private:
         bool emoji_popup_open_ = false;
-        CompletionModel *emoji_completion_model_;
+        CompletionProxyModel *emoji_completion_model_;
         std::deque<QString> true_history_, working_history_;
         int trigger_pos_; // Where emoji completer was triggered
         size_t history_index_;
-- 
GitLab