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:
parent
c6162914ed
commit
a29f3fb407
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user