def wheelEvent(self, event: QtGui.QWheelEvent): """Implementation. Handles zooming the editor's view. """ if (event.modifiers() & Qt.ControlModifier and event.orientation() == Qt.Vertical): if event.delta() > 0: self.zoomIn() else: self.zoomOut() # TODO: Improve cursor anchoring; be more like Aseprite prevAnchor = self.transformationAnchor() self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.setTransform(QTransform.fromScale(self.zoom(), self.zoom())) self.updateSceneRect(self.zoom()) self.setTransformationAnchor(prevAnchor) event.accept() elif event.orientation() == Qt.Horizontal: # XXX: Workaround for the insane horizontal scroll delta of 15240 on the # Logitech G502 mouse. if abs(event.delta()) == 15240: newDelta = 120 if event.delta() > 0 else -120 event = QtGui.QWheelEvent(event.pos(), event.globalPos(), newDelta, event.buttons(), event.modifiers(), orient=Qt.Horizontal) super().wheelEvent(event) else: super().wheelEvent(event)
def __cloneMouseWheelEvent(self, e: QWheelEvent): pos = e.pos() globalPos = e.globalPos() pixelDelta = e.pixelDelta() angleDelta = e.angleDelta() buttons = e.buttons() modifiers = e.modifiers() phase = e.phase() inverted = e.inverted() clone = QWheelEvent(pos, globalPos, pixelDelta, angleDelta, buttons, modifiers, phase, inverted) clone.ignore() clone.accepted = False return clone