diff options
Diffstat (limited to 'widgets')
| -rw-r--r-- | widgets/CustomMouseArea.qml | 21 | ||||
| -rw-r--r-- | widgets/StyledScrollBar.qml | 5 |
2 files changed, 24 insertions, 2 deletions
diff --git a/widgets/CustomMouseArea.qml b/widgets/CustomMouseArea.qml new file mode 100644 index 0000000..7c973c2 --- /dev/null +++ b/widgets/CustomMouseArea.qml @@ -0,0 +1,21 @@ +import QtQuick + +MouseArea { + property int scrollAccumulatedY: 0 + + function onWheel(event: WheelEvent): void { + } + + onWheel: event => { + // Update accumulated scroll + if (Math.sign(event.angleDelta.y) !== Math.sign(scrollAccumulatedY)) + scrollAccumulatedY = 0; + scrollAccumulatedY += event.angleDelta.y; + + // Trigger handler and reset if above threshold + if (Math.abs(scrollAccumulatedY) >= 120) { + onWheel(event); + scrollAccumulatedY = 0; + } + } +} diff --git a/widgets/StyledScrollBar.qml b/widgets/StyledScrollBar.qml index c655536..6fc80a9 100644 --- a/widgets/StyledScrollBar.qml +++ b/widgets/StyledScrollBar.qml @@ -21,10 +21,11 @@ ScrollBar { } } - MouseArea { + CustomMouseArea { z: -1 anchors.fill: parent - onWheel: event => { + + function onWheel(event: WheelEvent): void { if (event.angleDelta.y > 0) root.decrease(); else if (event.angleDelta.y < 0) |