1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-03-10 05:34:36 +00:00

only update delta when mouse is being dragged to reduce paint events

This commit is contained in:
glubsy 2020-06-04 17:52:46 +02:00
parent c6162914ed
commit a29f3fb407

View File

@ -44,6 +44,7 @@ class ImageViewer(QWidget):
self.reference = QPointF() self.reference = QPointF()
self.delta = QPointF() self.delta = QPointF()
self.scalefactor = 1.0 self.scalefactor = 1.0
self.m_drag = False
self.area = QScrollArea(parent) self.area = QScrollArea(parent)
self.area.setBackgroundRole(QPalette.Dark) self.area.setBackgroundRole(QPalette.Dark)
@ -75,7 +76,7 @@ class ImageViewer(QWidget):
painter.scale(self.scalefactor, self.scalefactor) painter.scale(self.scalefactor, self.scalefactor)
painter.translate(self.delta) painter.translate(self.delta)
painter.drawPixmap(self.m_rect.topLeft(), self.pixmap) painter.drawPixmap(self.m_rect.topLeft(), self.pixmap)
self.mouseMoved.emit(self.delta) # print(f"paint event, delta={self.delta}")
def setCenter(self): def setCenter(self):
""" Resets origin """ """ Resets origin """
@ -86,24 +87,30 @@ class ImageViewer(QWidget):
if self.parent.bestFit: if self.parent.bestFit:
event.ignore() event.ignore()
return return
if event.buttons() == Qt.LeftButton:
self.m_drag = True
self.reference = event.pos() self.reference = event.pos()
self.app.setOverrideCursor(Qt.ClosedHandCursor) self.app.setOverrideCursor(Qt.ClosedHandCursor)
self.setMouseTracking(True) self.setMouseTracking(True)
def mouseMoveEvent(self, event): def mouseMoveEvent(self, event):
if self.parent.bestFit or event.buttons() != Qt.LeftButton: if self.parent.bestFit:
event.ignore() event.ignore()
return return
self.delta += (event.pos() - self.reference) * 1.0/self.scalefactor self.delta += (event.pos() - self.reference) * 1.0/self.scalefactor
self.reference = event.pos() self.reference = event.pos()
if self.m_drag:
self.mouseMoved.emit(self.delta)
self.update() self.update()
def mouseReleaseEvent(self, event): def mouseReleaseEvent(self, event):
if self.parent.bestFit: if self.parent.bestFit:
event.ignore() event.ignore()
return return
if event.buttons() == Qt.LeftButton:
m_drag = False
self.app.restoreOverrideCursor() self.app.restoreOverrideCursor()
self.setMouseTracking(False) self.setMouseTracking(False)