From ac40d2e66d79b259e19c5d1ae471146522177f41 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Feb 2011 18:12:38 -0700 Subject: [PATCH] Fix Next and Previous buttons in new metadata dialog --- src/calibre/gui2/metadata/single.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/metadata/single.py b/src/calibre/gui2/metadata/single.py index e9d34bd47b..e5de2e3d97 100644 --- a/src/calibre/gui2/metadata/single.py +++ b/src/calibre/gui2/metadata/single.py @@ -314,6 +314,10 @@ class MetadataSingleDialogBase(ResizableDialog): widget.commit(self.book_id) self.db.commit() + rows = self.db.refresh_ids(list(self.books_to_refresh)) + if rows: + self.rows_to_refresh |= set(rows) + return True def accept(self): @@ -335,12 +339,14 @@ class MetadataSingleDialogBase(ResizableDialog): self.current_row = current_row if view_slot is not None: self.view_format.connect(view_slot) - self.do_one() + self.do_one(apply_changes=False) ret = self.exec_() self.break_cycles() return ret - def do_one(self, delta=0): + def do_one(self, delta=0, apply_changes=True): + if apply_changes: + self.apply_changes() self.current_row += delta prev = next_ = None if self.current_row > 0: @@ -357,9 +363,7 @@ class MetadataSingleDialogBase(ResizableDialog): self.prev_button.setToolTip(tip) self.prev_button.setVisible(prev is not None) self(self.db.id(self.row_list[self.current_row])) - rows = self.db.refresh_ids(list(self.books_to_refresh)) - if rows: - self.rows_to_refresh |= set(rows) + def break_cycles(self): # Break any reference cycles that could prevent python