Prevent calling edit metadata from locked book details windows. EM edits the currently selected book, which is almost certainly not the book in the locked window.

This commit is contained in:
Charles Haley 2023-04-24 13:19:30 +01:00
parent cdc4a0a4d3
commit 663ccc2166
2 changed files with 11 additions and 5 deletions

View File

@ -561,8 +561,11 @@ def details_context_menu_event(view, ev, book_info, add_popup_action=False, edit
if add_popup_action:
menu.addMenu(get_gui().iactions['Show Book Details'].qaction.menu())
else:
ema = get_gui().iactions['Edit Metadata'].menuless_qaction
menu.addAction(_('Open the Edit metadata window') + '\t' + ema.shortcut().toString(QKeySequence.SequenceFormat.NativeText), edit_metadata)
# We can't open edit metadata from a locked window because EM expects to
# be editing the current book, which this book probably isn't
if edit_metadata is not None:
ema = get_gui().iactions['Edit Metadata'].menuless_qaction
menu.addAction(_('Open the Edit metadata window') + '\t' + ema.shortcut().toString(QKeySequence.SequenceFormat.NativeText), edit_metadata)
if not reindex_fmt_added:
menu.addSeparator()
menu.addAction(_(

View File

@ -119,19 +119,21 @@ class Configure(Dialog):
class Details(HTMLDisplay):
def __init__(self, book_info, parent=None, allow_context_menu=True):
def __init__(self, book_info, parent=None, allow_context_menu=True, is_locked=False):
HTMLDisplay.__init__(self, parent)
self.book_info = book_info
self.edit_metadata = getattr(parent, 'edit_metadata', None)
self.setDefaultStyleSheet(css())
self.allow_context_menu = allow_context_menu
self.is_locked = is_locked
def sizeHint(self):
return QSize(350, 350)
def contextMenuEvent(self, ev):
if self.allow_context_menu:
details_context_menu_event(self, ev, self.book_info, edit_metadata=self.edit_metadata)
details_context_menu_event(self, ev, self.book_info,
edit_metadata=None if self.is_locked else self.edit_metadata)
class DialogNumbers(IntEnum):
@ -167,7 +169,8 @@ class BookInfo(QDialog):
self.splitter.addWidget(self.cover)
self.details = Details(parent.book_details.book_info, self,
allow_context_menu=library_path is None)
allow_context_menu=library_path is None,
is_locked = dialog_number == DialogNumbers.Locked)
self.details.anchor_clicked.connect(self.on_link_clicked)
self.link_delegate = link_delegate
self.details.setAttribute(Qt.WidgetAttribute.WA_OpaquePaintEvent, False)