From a29f3fb4073315a2947636362d83e035ffa2767b Mon Sep 17 00:00:00 2001 From: glubsy Date: Thu, 4 Jun 2020 17:52:46 +0200 Subject: [PATCH] only update delta when mouse is being dragged to reduce paint events --- qt/pe/details_dialog.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/qt/pe/details_dialog.py b/qt/pe/details_dialog.py index a1caf4b5..fc019c23 100644 --- a/qt/pe/details_dialog.py +++ b/qt/pe/details_dialog.py @@ -44,6 +44,7 @@ class ImageViewer(QWidget): self.reference = QPointF() self.delta = QPointF() self.scalefactor = 1.0 + self.m_drag = False self.area = QScrollArea(parent) self.area.setBackgroundRole(QPalette.Dark) @@ -75,7 +76,7 @@ class ImageViewer(QWidget): painter.scale(self.scalefactor, self.scalefactor) painter.translate(self.delta) painter.drawPixmap(self.m_rect.topLeft(), self.pixmap) - self.mouseMoved.emit(self.delta) + # print(f"paint event, delta={self.delta}") def setCenter(self): """ Resets origin """ @@ -86,24 +87,30 @@ class ImageViewer(QWidget): if self.parent.bestFit: event.ignore() return + if event.buttons() == Qt.LeftButton: + self.m_drag = True self.reference = event.pos() self.app.setOverrideCursor(Qt.ClosedHandCursor) self.setMouseTracking(True) def mouseMoveEvent(self, event): - if self.parent.bestFit or event.buttons() != Qt.LeftButton: + if self.parent.bestFit: event.ignore() return self.delta += (event.pos() - self.reference) * 1.0/self.scalefactor self.reference = event.pos() + if self.m_drag: + self.mouseMoved.emit(self.delta) self.update() def mouseReleaseEvent(self, event): if self.parent.bestFit: event.ignore() return + if event.buttons() == Qt.LeftButton: + m_drag = False self.app.restoreOverrideCursor() self.setMouseTracking(False)