diff --git a/src/calibre/gui2/tweak_book/diff.py b/src/calibre/gui2/tweak_book/diff.py index d88bf410ec..f1bd0ef549 100644 --- a/src/calibre/gui2/tweak_book/diff.py +++ b/src/calibre/gui2/tweak_book/diff.py @@ -13,7 +13,7 @@ from difflib import SequenceMatcher from future_builtins import zip from PyQt4.Qt import ( - QSplitter, QApplication, QPlainTextDocumentLayout, QTextDocument, + QSplitter, QApplication, QPlainTextDocumentLayout, QTextDocument, QTimer, QTextCursor, QTextCharFormat, Qt, QRect, QPainter, QPalette, QPen, QBrush, QColor, QTextLayout, QCursor, QFont, QSplitterHandle, QStyle, QPainterPath, QHBoxLayout, QWidget, QScrollBar, QEventLoop, pyqtSignal) @@ -613,13 +613,22 @@ class DiffView(QWidget): l.addWidget(self.scrollbar) self.syncing = False self.bars = [] + self.resize_timer = QTimer(self) + self.resize_timer.setSingleShot(True) + self.resize_timer.timeout.connect(self.resize_debounced) for i, bar in enumerate((self.scrollbar, self.view.left.verticalScrollBar(), self.view.right.verticalScrollBar())): self.bars.append(bar) bar.valueChanged[int].connect(partial(self.scrolled, i)) - self.view.left.resized.connect(self.adjust_range) + self.view.left.resized.connect(self.resized) for v in self.view.left, self.view.right, self.view.handle(1): v.wheel_event.connect(self.scrollbar.wheelEvent) + def resized(self): + self.resize_timer.start(100) + + def resize_debounced(self): + self.adjust_range() + @property def syncpos(self): return self.scrollbar.value() + int(self.scrollbar.pageStep() * self.SYNC_POSITION)