Fix a regression in calibre 6.0 that broke remembering the previous sort order for a column

More PyQt6 enum goodness
This commit is contained in:
Kovid Goyal 2022-08-05 07:34:26 +05:30
parent c9d3d132be
commit 15ed01d0e1
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 7 additions and 3 deletions

View File

@ -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

View File

@ -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)