WIP debug wheel guard errors #141
@@ -26,26 +26,30 @@ class WheelValueGuard(QObject):
|
||||
GUARDED = (QAbstractSpinBox, QSlider, QDial, QComboBox, QTabBar)
|
||||
|
||||
def eventFilter(self, obj, event):
|
||||
if event.type() == QEvent.Type.Wheel and isinstance(obj, self.GUARDED):
|
||||
if event.buttons() & Qt.MouseButton.RightButton:
|
||||
return False # right button held: deliberate value adjustment
|
||||
area = obj.parentWidget()
|
||||
while area is not None and not isinstance(area, QAbstractScrollArea):
|
||||
area = area.parentWidget()
|
||||
if area is not None:
|
||||
relayed = QWheelEvent(
|
||||
area.viewport().mapFromGlobal(event.globalPosition()),
|
||||
event.globalPosition(),
|
||||
event.pixelDelta(),
|
||||
event.angleDelta(),
|
||||
event.buttons(),
|
||||
event.modifiers(),
|
||||
event.phase(),
|
||||
event.inverted(),
|
||||
)
|
||||
QApplication.sendEvent(area.viewport(), relayed)
|
||||
return True
|
||||
return super().eventFilter(obj, event)
|
||||
try:
|
||||
if event.type() == QEvent.Type.Wheel and isinstance(obj, self.GUARDED):
|
||||
if event.buttons() & Qt.MouseButton.RightButton:
|
||||
return False # right button held: deliberate value adjustment
|
||||
area = obj.parentWidget()
|
||||
while area is not None and not isinstance(area, QAbstractScrollArea):
|
||||
area = area.parentWidget()
|
||||
if area is not None:
|
||||
relayed = QWheelEvent(
|
||||
area.viewport().mapFromGlobal(event.globalPosition()),
|
||||
event.globalPosition(),
|
||||
event.pixelDelta(),
|
||||
event.angleDelta(),
|
||||
event.buttons(),
|
||||
event.modifiers(),
|
||||
event.phase(),
|
||||
event.inverted(),
|
||||
)
|
||||
QApplication.sendEvent(area.viewport(), relayed)
|
||||
return True
|
||||
return super().eventFilter(obj, event)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user