From e2f905a8afd04ca8f7982de12ba7d043a73f06f2 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Fri, 7 Jul 2017 18:58:18 +0200 Subject: [PATCH 1/2] Fix calibre startup crash caused by Quickview when the applied virtual library is empty (has no books). --- src/calibre/gui2/dialogs/quickview.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/calibre/gui2/dialogs/quickview.py b/src/calibre/gui2/dialogs/quickview.py index 4b625510c0..487aa7b805 100644 --- a/src/calibre/gui2/dialogs/quickview.py +++ b/src/calibre/gui2/dialogs/quickview.py @@ -356,13 +356,16 @@ class Quickview(QDialog, Ui_Quickview): if self.lock_qv.isChecked(): return - bv_row = idx.row() - self.current_column = idx.column() - key = self.view.column_map[self.current_column] - book_id = self.view.model().id(bv_row) - if self.current_book_id == book_id and self.current_key == key: - return - self._refresh(book_id, key) + try: + bv_row = idx.row() + self.current_column = idx.column() + key = self.view.column_map[self.current_column] + book_id = self.view.model().id(bv_row) + if self.current_book_id == book_id and self.current_key == key: + return + self._refresh(book_id, key) + except: + self.indicate_no_items() def _refresh(self, book_id, key): ''' From 2982d21fb781b6d05541ad68ee7579a9f98fc688 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Fri, 7 Jul 2017 20:55:46 +0200 Subject: [PATCH 2/2] Handle Quickview switching to a VL or empty library by clearing the QV pane contents --- src/calibre/gui2/dialogs/quickview.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/calibre/gui2/dialogs/quickview.py b/src/calibre/gui2/dialogs/quickview.py index 487aa7b805..7206fd7006 100644 --- a/src/calibre/gui2/dialogs/quickview.py +++ b/src/calibre/gui2/dialogs/quickview.py @@ -218,6 +218,7 @@ class Quickview(QDialog, Ui_Quickview): self.books_table.horizontalHeader().sectionResized.connect(self.section_resized) self.dock_button.clicked.connect(self.show_as_pane_changed) + self.gui.search.cleared.connect(self.indicate_no_items) def add_columns_to_widget(self): ''' @@ -418,6 +419,8 @@ class Quickview(QDialog, Ui_Quickview): def indicate_no_items(self): self.no_valid_items = True self.items.clear() + self.books_table.clear() + self.books_table.setRowCount(0) self.items.addItem(QListWidgetItem(_('**No items found**'))) self.books_label.setText(_('Click in a column in the library view ' 'to see the information for that book'))