Fix #1904095 [E-book viewer: more issues with removed bookmarks](https://bugs.launchpad.net/calibre/+bug/1904095)

This commit is contained in:
Kovid Goyal 2020-11-17 11:02:29 +05:30
parent 1dd04b97c3
commit fbbb8ffdf5
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -35,15 +35,23 @@ class BookmarksList(QListWidget):
self.ac_delete = ac = QAction(QIcon(I('trash.png')), _('Remove this bookmark'), self)
self.addAction(ac)
@property
def current_non_removed_item(self):
ans = self.currentItem()
if ans is not None:
bm = ans.data(Qt.UserRole)
if not bm.get('removed'):
return ans
def keyPressEvent(self, ev):
if ev.key() in (Qt.Key_Enter, Qt.Key_Return):
i = self.currentItem()
i = self.current_non_removed_item
if i is not None:
self.bookmark_activated.emit(i)
ev.accept()
return
if ev.key() in (Qt.Key_Delete, Qt.Key_Backspace):
i = self.currentItem()
i = self.current_non_removed_item
if i is not None:
self.ac_delete.trigger()
ev.accept()
@ -58,6 +66,8 @@ class BookmarksList(QListWidget):
current_item = items[row]
items = [i for i in items if not i.isHidden()]
count = len(items)
if not count:
return
row = items.index(current_item)
nrow = (row + delta + count) % count
self.setCurrentItem(items[nrow])
@ -240,7 +250,7 @@ class BookmarkManager(QWidget):
self.edited.emit(self.get_bookmarks())
def delete_bookmark(self):
item = self.bookmarks_list.currentItem()
item = self.bookmarks_list.current_non_removed_item
if item is not None:
bm = item.data(Qt.UserRole)
if confirm(
@ -256,7 +266,7 @@ class BookmarkManager(QWidget):
self.edited.emit(self.get_bookmarks())
def edit_bookmark(self):
item = self.bookmarks_list.currentItem()
item = self.bookmarks_list.current_non_removed_item
if item is not None:
self.bookmarks_list.editItem(item)