From 15ed01d0e10df77e014b1c6c95659e99229424c6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 5 Aug 2022 07:34:26 +0530 Subject: [PATCH] Fix a regression in calibre 6.0 that broke remembering the previous sort order for a column More PyQt6 enum goodness --- src/calibre/gui2/library/models.py | 2 +- src/calibre/gui2/library/views.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index dba9a12697..8b189fcdff 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -1604,7 +1604,7 @@ class DeviceBooksModel(BooksModel): # {{{ else: self.sorted_map = list(range(len(self.db))) self.sorted_map.sort(key=keygen, reverse=descending) - self.sorted_on = (self.column_map[col], order) + self.sorted_on = (self.column_map[col], not descending) self.sort_history.insert(0, self.sorted_on) if hasattr(keygen, 'db'): keygen.db = None diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index 4bfa43ea29..b3fd22929f 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -594,6 +594,8 @@ class BooksView(QTableView): # {{{ self.intelligent_sort(field, order == Qt.SortOrder.AscendingOrder) def intelligent_sort(self, field, ascending): + if isinstance(ascending, Qt.SortOrder): + ascending = ascending == Qt.SortOrder.AscendingOrder m = self.model() pname = 'previous_sort_order_' + self.__class__.__name__ previous = gprefs.get(pname, {}) @@ -602,9 +604,9 @@ class BooksView(QTableView): # {{{ previous[field] = ascending gprefs[pname] = previous return - previous[m.sorted_on[0]] = Qt.SortOrder(m.sorted_on[1]).value + previous[m.sorted_on[0]] = m.sorted_on[1] gprefs[pname] = previous - self.sort_by_named_field(field, Qt.SortOrder(previous[field])) + self.sort_by_named_field(field, previous[field]) def about_to_be_sorted(self, idc): selected_rows = [r.row() for r in self.selectionModel().selectedRows()] @@ -618,6 +620,8 @@ class BooksView(QTableView): # {{{ self.horizontalScrollBar().setValue(pos) def sort_by_named_field(self, field, order, reset=True): + if isinstance(order, Qt.SortOrder): + order = order == Qt.SortOrder.AscendingOrder if field in self.column_map: idx = self.column_map.index(field) self.sort_by_column_and_order(idx, order)