diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 30609ac377..41645f11f2 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -485,9 +485,9 @@ class EditMetadataAction(InterfaceAction): Merge selected books in library. ''' from calibre.gui2.dialogs.confirm_merge import confirm_merge - if self.gui.stack.currentIndex() != 0: + if self.gui.current_view() is not self.gui.library_view: return - rows = self.gui.library_view.selectionModel().selectedRows() + rows = self.gui.library_view.indices_for_merge() if not rows or len(rows) == 0: return error_dialog(self.gui, _('Cannot merge books'), _('No books selected'), show=True) diff --git a/src/calibre/gui2/library/alternate_views.py b/src/calibre/gui2/library/alternate_views.py index 171a4ef890..6427026459 100644 --- a/src/calibre/gui2/library/alternate_views.py +++ b/src/calibre/gui2/library/alternate_views.py @@ -1017,6 +1017,9 @@ class GridView(QListView): else: return QListView.mousePressEvent(self, ev) + def indices_for_merge(self, resolved=True): + return self.selectionModel().selectedIndexes() + def number_of_columns(self): # Number of columns currently visible in the grid if self._ncols is None: diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index ec2c20e27a..2a02e4a108 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -948,6 +948,11 @@ class BooksView(QTableView): # {{{ return True return False + def indices_for_merge(self, resolved=False): + if not resolved: + return self.alternate_views.current_view.indices_for_merge(resolved=True) + return self.selectionModel().selectedRows() + def scrollContentsBy(self, dx, dy): # Needed as Qt bug causes headerview to not always update when scrolling QTableView.scrollContentsBy(self, dx, dy)