mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Debounce resize events
This commit is contained in:
parent
acb1742432
commit
368badcb85
@ -13,7 +13,7 @@ from difflib import SequenceMatcher
|
|||||||
from future_builtins import zip
|
from future_builtins import zip
|
||||||
|
|
||||||
from PyQt4.Qt import (
|
from PyQt4.Qt import (
|
||||||
QSplitter, QApplication, QPlainTextDocumentLayout, QTextDocument,
|
QSplitter, QApplication, QPlainTextDocumentLayout, QTextDocument, QTimer,
|
||||||
QTextCursor, QTextCharFormat, Qt, QRect, QPainter, QPalette, QPen,
|
QTextCursor, QTextCharFormat, Qt, QRect, QPainter, QPalette, QPen,
|
||||||
QBrush, QColor, QTextLayout, QCursor, QFont, QSplitterHandle, QStyle,
|
QBrush, QColor, QTextLayout, QCursor, QFont, QSplitterHandle, QStyle,
|
||||||
QPainterPath, QHBoxLayout, QWidget, QScrollBar, QEventLoop, pyqtSignal)
|
QPainterPath, QHBoxLayout, QWidget, QScrollBar, QEventLoop, pyqtSignal)
|
||||||
@ -613,13 +613,22 @@ class DiffView(QWidget):
|
|||||||
l.addWidget(self.scrollbar)
|
l.addWidget(self.scrollbar)
|
||||||
self.syncing = False
|
self.syncing = False
|
||||||
self.bars = []
|
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())):
|
for i, bar in enumerate((self.scrollbar, self.view.left.verticalScrollBar(), self.view.right.verticalScrollBar())):
|
||||||
self.bars.append(bar)
|
self.bars.append(bar)
|
||||||
bar.valueChanged[int].connect(partial(self.scrolled, i))
|
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):
|
for v in self.view.left, self.view.right, self.view.handle(1):
|
||||||
v.wheel_event.connect(self.scrollbar.wheelEvent)
|
v.wheel_event.connect(self.scrollbar.wheelEvent)
|
||||||
|
|
||||||
|
def resized(self):
|
||||||
|
self.resize_timer.start(100)
|
||||||
|
|
||||||
|
def resize_debounced(self):
|
||||||
|
self.adjust_range()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def syncpos(self):
|
def syncpos(self):
|
||||||
return self.scrollbar.value() + int(self.scrollbar.pageStep() * self.SYNC_POSITION)
|
return self.scrollbar.value() + int(self.scrollbar.pageStep() * self.SYNC_POSITION)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user