From 063bcabad4636729a7d8f2a9aad6524d81161819 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 9 Aug 2013 15:06:30 +0530 Subject: [PATCH] Fix book list not scrolling when changing current book with book info dialog --- src/calibre/gui2/dialogs/book_info.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index 284d17a349..92691fd7cd 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -31,7 +31,6 @@ class BookInfo(QDialog, Ui_BookInfo): palette.setBrush(QPalette.Base, Qt.transparent) self.details.page().setPalette(palette) - self.view = view self.current_row = None self.fit_cover.setChecked(dynamic.get('book_info_dialog_fit_cover', @@ -85,20 +84,25 @@ class BookInfo(QDialog, Ui_BookInfo): QTimer.singleShot(1, self.resize_cover) def slave(self, current, previous): - row = current.row() - self.refresh(row) + if current.row() != previous.row(): + row = current.row() + 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) def next(self): - row = self.view.currentIndex().row() - ni = self.view.model().index(row+1, 0) - if ni.isValid(): - self.view.setCurrentIndex(ni) + self.move() def previous(self): - row = self.view.currentIndex().row() - ni = self.view.model().index(row-1, 0) - if ni.isValid(): - self.view.setCurrentIndex(ni) + self.move(-1) def resize_cover(self): if self.cover_pixmap is None: @@ -138,4 +142,3 @@ class BookInfo(QDialog, Ui_BookInfo): self.resize_cover() html = render_html(mi, self.css, True, self, all_fields=True) self.details.setHtml(html) -