From 9f7637778abe93ff75098b2598704df5a8514059 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 9 Aug 2013 15:49:56 +0530 Subject: [PATCH] Ensure the book info dialog is deleted when closed --- src/calibre/gui2/actions/show_book_details.py | 4 ++++ src/calibre/gui2/dialogs/book_info.py | 23 ++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/actions/show_book_details.py b/src/calibre/gui2/actions/show_book_details.py index 520d0522c9..75026ae370 100644 --- a/src/calibre/gui2/actions/show_book_details.py +++ b/src/calibre/gui2/actions/show_book_details.py @@ -43,4 +43,8 @@ class ShowBookDetailsAction(InterfaceAction): self.memory.remove(d) except ValueError: pass + else: + import sip + sip.delete(d) + del d diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index 898058a74d..b0c1087238 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -63,6 +63,8 @@ class BookInfo(QDialog, Ui_BookInfo): def done(self, r): ret = QDialog.done(self, r) + self.view.selectionModel().currentChanged.disconnect(self.slave) + self.view = self.link_delegate = self.gui = None self.closed.emit(self) return ret @@ -96,14 +98,19 @@ class BookInfo(QDialog, Ui_BookInfo): self.refresh(row) def move(self, delta=1): - idx = self.view.currentIndex() - if idx.isValid(): - m = self.view.model() - ni = m.index(idx.row() + delta, idx.column()) - if ni.isValid(): - self.view.setCurrentIndex(ni) - if self.view.isVisible(): - self.view.scrollTo(ni) + self.view.selectionModel().currentChanged.disconnect(self.slave) + try: + idx = self.view.currentIndex() + if idx.isValid(): + m = self.view.model() + ni = m.index(idx.row() + delta, idx.column()) + if ni.isValid(): + self.view.setCurrentIndex(ni) + self.refresh(ni.row()) + if self.view.isVisible(): + self.view.scrollTo(ni) + finally: + self.view.selectionModel().currentChanged.connect(self.slave) def next(self): self.move()