From caf5937585befe9757b0203d0f3e50cdfc1e7220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Fri, 15 Jul 2016 19:05:52 +0200 Subject: [PATCH 1/4] completion: get rid of custom_filter (see #545) --- qutebrowser/completion/models/base.py | 10 --------- qutebrowser/completion/models/sortfilter.py | 25 +++++++++------------ 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/qutebrowser/completion/models/base.py b/qutebrowser/completion/models/base.py index 8fc88e54a..cb589ce38 100644 --- a/qutebrowser/completion/models/base.py +++ b/qutebrowser/completion/models/base.py @@ -133,13 +133,3 @@ class BaseCompletionModel(QStandardItemModel): Override QAbstractItemModel::sort. """ raise NotImplementedError - - def custom_filter(self, pattern, row, parent): - """Custom filter. - - Args: - pattern: The current filter pattern. - row: The row to accept or reject in the filter. - parent: The parent item QModelIndex. - """ - raise NotImplementedError diff --git a/qutebrowser/completion/models/sortfilter.py b/qutebrowser/completion/models/sortfilter.py index ab0a60242..19c3d61d2 100644 --- a/qutebrowser/completion/models/sortfilter.py +++ b/qutebrowser/completion/models/sortfilter.py @@ -140,20 +140,17 @@ class CompletionFilterModel(QSortFilterProxyModel): if parent == QModelIndex() or not self.pattern: return True - try: - return self.srcmodel.custom_filter(self.pattern, row, parent) - except NotImplementedError: - for col in self.srcmodel.columns_to_filter: - idx = self.srcmodel.index(row, col, parent) - if not idx.isValid(): - # No entries in parent model - continue - data = self.srcmodel.data(idx) - if not data: - continue - elif self.pattern_re.search(data): - return True - return False + for col in self.srcmodel.columns_to_filter: + idx = self.srcmodel.index(row, col, parent) + if not idx.isValid(): + # No entries in parent model + continue + data = self.srcmodel.data(idx) + if not data: + continue + elif self.pattern_re.search(data): + return True + return False def intelligentLessThan(self, lindex, rindex): """Custom sorting implementation. From 49327dfcbba4ee714536d17c7b9f818c5bce8343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Fri, 15 Jul 2016 22:30:48 +0200 Subject: [PATCH 2/4] completion: highlight only the matched terms closes #1650 --- qutebrowser/completion/completiondelegate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qutebrowser/completion/completiondelegate.py b/qutebrowser/completion/completiondelegate.py index 167cdb6b8..ab7b3ad88 100644 --- a/qutebrowser/completion/completiondelegate.py +++ b/qutebrowser/completion/completiondelegate.py @@ -200,7 +200,7 @@ class CompletionItemDelegate(QStyledItemDelegate): columns_to_filter = index.model().srcmodel.columns_to_filter if index.column() in columns_to_filter and pattern: repl = r'\g<0>' - text = re.sub(re.escape(pattern).replace(r'\ ', r'.*'), + text = re.sub(re.escape(pattern).replace(r'\ ', r'|'), repl, self._opt.text, flags=re.IGNORECASE) self._doc.setHtml(text) else: From 119f9c0e18b61a9bd13a3ccf67e0638a8809e3bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Sun, 17 Jul 2016 12:46:51 +0200 Subject: [PATCH 3/4] completion: get rid of model-specific sort method (see #545) --- qutebrowser/completion/models/base.py | 7 ------- qutebrowser/completion/models/sortfilter.py | 8 +------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/qutebrowser/completion/models/base.py b/qutebrowser/completion/models/base.py index cb589ce38..93e6dc513 100644 --- a/qutebrowser/completion/models/base.py +++ b/qutebrowser/completion/models/base.py @@ -126,10 +126,3 @@ class BaseCompletionModel(QStandardItemModel): else: # category return Qt.NoItemFlags - - def sort(self, column, order=Qt.AscendingOrder): - """Sort the data in column according to order. - - Override QAbstractItemModel::sort. - """ - raise NotImplementedError diff --git a/qutebrowser/completion/models/sortfilter.py b/qutebrowser/completion/models/sortfilter.py index 19c3d61d2..0e3b96050 100644 --- a/qutebrowser/completion/models/sortfilter.py +++ b/qutebrowser/completion/models/sortfilter.py @@ -63,9 +63,6 @@ class CompletionFilterModel(QSortFilterProxyModel): Invalidates the filter and re-sorts the model. - If the current completion model overrides sort(), it is used. - If not, the default implementation in QCompletionFilterModel is called. - Args: val: The value to set. """ @@ -76,10 +73,7 @@ class CompletionFilterModel(QSortFilterProxyModel): self.pattern_re = re.compile(val, re.IGNORECASE) self.invalidateFilter() sortcol = 0 - try: - self.srcmodel.sort(sortcol) - except NotImplementedError: - self.sort(sortcol) + self.sort(sortcol) self.invalidate() def count(self): From 2a70146db1a36faa75db66a2ca57f81212301b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Tue, 26 Jul 2016 13:49:31 +0200 Subject: [PATCH 4/4] Remove unneeded invalidateFilter call. First done in b5781f0ed3ad2fdd517afa37f7845919aa319c99 and later reverted in a6f1bf29aed0e041fa7e0c884d6166b4564a3908 because it had broken "completion->shrink", but that is no longer the case. --- qutebrowser/completion/models/sortfilter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/qutebrowser/completion/models/sortfilter.py b/qutebrowser/completion/models/sortfilter.py index 0e3b96050..ffa44b82e 100644 --- a/qutebrowser/completion/models/sortfilter.py +++ b/qutebrowser/completion/models/sortfilter.py @@ -71,10 +71,9 @@ class CompletionFilterModel(QSortFilterProxyModel): val = re.escape(val) val = val.replace(r'\ ', r'.*') self.pattern_re = re.compile(val, re.IGNORECASE) - self.invalidateFilter() + self.invalidate() sortcol = 0 self.sort(sortcol) - self.invalidate() def count(self): """Get the count of non-toplevel items currently visible.