mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix various regressions that could be triggered when using serach restrictions and/or multi-sorts and connecting a device
This commit is contained in:
commit
fc8bcdc6f0
@ -121,10 +121,8 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
def set_device_connected(self, is_connected):
|
def set_device_connected(self, is_connected):
|
||||||
self.device_connected = is_connected
|
self.device_connected = is_connected
|
||||||
self.db.refresh_ondevice()
|
self.db.refresh_ondevice()
|
||||||
self.refresh()
|
self.refresh() # does a resort()
|
||||||
self.research()
|
self.research()
|
||||||
if is_connected and self.sorted_on[0] == 'ondevice':
|
|
||||||
self.resort()
|
|
||||||
|
|
||||||
def set_book_on_device_func(self, func):
|
def set_book_on_device_func(self, func):
|
||||||
self.book_on_device = func
|
self.book_on_device = func
|
||||||
@ -249,7 +247,7 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
# the search and count records for restrictions
|
# the search and count records for restrictions
|
||||||
self.searched.emit(True)
|
self.searched.emit(True)
|
||||||
|
|
||||||
def sort(self, col, order, reset=True):
|
def sort(self, col, order, reset=True, update_history=True):
|
||||||
if not self.db:
|
if not self.db:
|
||||||
return
|
return
|
||||||
self.about_to_be_sorted.emit(self.db.id)
|
self.about_to_be_sorted.emit(self.db.id)
|
||||||
@ -260,23 +258,23 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
self.clear_caches()
|
self.clear_caches()
|
||||||
self.reset()
|
self.reset()
|
||||||
self.sorted_on = (label, order)
|
self.sorted_on = (label, order)
|
||||||
self.sort_history.insert(0, self.sorted_on)
|
if update_history:
|
||||||
|
self.sort_history.insert(0, self.sorted_on)
|
||||||
self.sorting_done.emit(self.db.index)
|
self.sorting_done.emit(self.db.index)
|
||||||
|
|
||||||
def refresh(self, reset=True):
|
def refresh(self, reset=True):
|
||||||
try:
|
|
||||||
col = self.column_map.index(self.sorted_on[0])
|
|
||||||
except:
|
|
||||||
col = 0
|
|
||||||
self.db.refresh(field=None)
|
self.db.refresh(field=None)
|
||||||
self.sort(col, self.sorted_on[1], reset=reset)
|
self.resort(reset=reset)
|
||||||
|
|
||||||
def resort(self, reset=True):
|
def resort(self, reset=True, history=5): # Bug report needed history=4 :)
|
||||||
try:
|
for col,ord in reversed(self.sort_history[:history]):
|
||||||
col = self.column_map.index(self.sorted_on[0])
|
try:
|
||||||
except ValueError:
|
col = self.column_map.index(col)
|
||||||
col = 0
|
except ValueError:
|
||||||
self.sort(col, self.sorted_on[1], reset=reset)
|
col = 0
|
||||||
|
self.sort(col, ord, reset=False, update_history=False)
|
||||||
|
if reset:
|
||||||
|
self.reset()
|
||||||
|
|
||||||
def research(self, reset=True):
|
def research(self, reset=True):
|
||||||
self.search(self.last_search, reset=reset)
|
self.search(self.last_search, reset=reset)
|
||||||
|
@ -549,7 +549,7 @@ class ResultCache(SearchQueryParser):
|
|||||||
self.sort(field, ascending)
|
self.sort(field, ascending)
|
||||||
self._map_filtered = list(self._map)
|
self._map_filtered = list(self._map)
|
||||||
if self.search_restriction:
|
if self.search_restriction:
|
||||||
self.search('', return_matches=False, ignore_search_restriction=False)
|
self.search('', return_matches=False)
|
||||||
|
|
||||||
def seriescmp(self, sidx, siidx, x, y, library_order=None):
|
def seriescmp(self, sidx, siidx, x, y, library_order=None):
|
||||||
try:
|
try:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user