From 587b113c84e06ccf1a1d5cf51609b523e7d65d29 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 11 Nov 2020 15:03:45 +0530 Subject: [PATCH] Viewer: Fix previous/next buttons iterating over removed bookmarks --- src/calibre/gui2/viewer/bookmarks.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/viewer/bookmarks.py b/src/calibre/gui2/viewer/bookmarks.py index a159e11d5d..8868d77ad5 100644 --- a/src/calibre/gui2/viewer/bookmarks.py +++ b/src/calibre/gui2/viewer/bookmarks.py @@ -51,11 +51,17 @@ class BookmarksList(QListWidget): return QListWidget.keyPressEvent(self, ev) def activate_related_bookmark(self, delta=1): - if self.count() > 0: - row = self.currentRow() - nrow = (row + delta + self.count()) % self.count() - self.setCurrentRow(nrow) - self.bookmark_activated.emit(self.currentItem()) + if not self.count(): + return + items = [self.item(r) for r in range(self.count())] + row = self.currentRow() + current_item = items[row] + items = [i for i in items if not i.isHidden()] + count = len(items) + row = items.index(current_item) + nrow = (row + delta + count) % count + self.setCurrentItem(items[nrow]) + self.bookmark_activated.emit(self.currentItem()) def next_bookmark(self): self.activate_related_bookmark()