Skip to content

Commit b964f96

Browse files
committed
[fix] fix events propagation
1 parent 892956d commit b964f96

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

ImageViewer.py

+11-9
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ def __init__(self):
5454

5555
self.currentZoom = 1
5656

57-
self.pixmap = None
5857
self.isDrawable = True
5958
self.brushPixmap = QPixmap(":/assets/cursor.png")
6059
self.setBrush()
@@ -75,8 +74,7 @@ def setImage(self, path):
7574
Open an image from a file.
7675
'''
7776
self.clear()
78-
self.pixmap = QPixmap(path)
79-
self.image.setPixmap(self.pixmap)
77+
self.image.setPixmap(QPixmap(path))
8078

8179
def wheelEvent(self, event):
8280
'''
@@ -91,6 +89,8 @@ def wheelEvent(self, event):
9189
self.currentZoom *= factor
9290
self.setBrush(size=self.brushSize, factor=self.currentZoom)
9391
self.scale(factor, factor)
92+
event.accept()
93+
super().wheelEvent(event)
9494

9595
def mousePressEvent(self, event):
9696
'''
@@ -106,9 +106,11 @@ def mousePressEvent(self, event):
106106
if event.buttons() == Qt.LeftButton: # Get drawing coordinates reference with left click
107107
QApplication.setOverrideCursor(self.drawingCursor)
108108
self.drawReference = self.mapToScene(event.pos())
109+
super().mousePressEvent(event)
109110

110111
def mouseReleaseEvent(self, event):
111112
QApplication.restoreOverrideCursor()
113+
super().mouseReleaseEvent(event)
112114

113115
def mouseMoveEvent(self, event):
114116
'''
@@ -136,15 +138,17 @@ def mouseMoveEvent(self, event):
136138
QApplication.setOverrideCursor(self.drawingCursor)
137139

138140
if event.buttons() == Qt.LeftButton and self.isDrawable and event.modifiers() == Qt.NoModifier: # Draw with left click pressed
139-
self.painter.begin(self.pixmap)
141+
pixmap = self.image.pixmap()
142+
self.painter.begin(pixmap)
140143
self.painter.setPen(
141144
QPen(self.brushColor, self.brushSize, Qt.SolidLine, Qt.RoundCap))
142145
self.painter.drawLine(self.drawReference,
143146
self.mapToScene(event.pos()))
144147
self.drawReference = self.mapToScene(event.pos())
145148
self.addToUndoStack()
146149
self.painter.end()
147-
self.image.setPixmap(self.pixmap)
150+
self.image.setPixmap(pixmap)
151+
super().mouseMoveEvent(event)
148152

149153
def addToUndoStack(self):
150154
if len(self.painterStack) > 40: # Avoid high memory usage
@@ -157,12 +161,10 @@ def undo(self):
157161
Undo drawing.
158162
'''
159163
if self.painterStack:
160-
self.pixmap = self.painterStack.pop()
161-
self.image.setPixmap(self.pixmap)
164+
self.image.setPixmap(self.painterStack.pop())
162165

163166
def clear(self):
164-
self.pixmap = None
165-
self.image.setPixmap(self.pixmap)
167+
self.image.setPixmap(QPixmap())
166168
self.painterStack.clear()
167169

168170
def dropEvent(self, event):
-10.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)