diff --git a/Widgets/DankFlickable.qml b/Widgets/DankFlickable.qml index 1b4044ee..b388ec1b 100644 --- a/Widgets/DankFlickable.qml +++ b/Widgets/DankFlickable.qml @@ -29,6 +29,7 @@ Flickable { property real lastWheelTime: 0 property real momentum: 0 property var velocitySamples: [] + property bool sessionUsedMouseWheel: false function startMomentum() { flickable.isMomentumActive = true @@ -49,10 +50,12 @@ Flickable { const isMouseWheel = Math.abs(deltaY) >= 120 && (Math.abs(deltaY) % 120) === 0 if (isMouseWheel) { + sessionUsedMouseWheel = true momentumTimer.stop() flickable.isMomentumActive = false velocitySamples = [] momentum = 0 + flickable.momentumVelocity = 0 const lines = Math.floor(Math.abs(deltaY) / 120) const scrollAmount = (deltaY > 0 ? -lines : lines) * flickable.mouseWheelSpeed @@ -65,6 +68,7 @@ Flickable { flickable.contentY = newY } else { + sessionUsedMouseWheel = false momentumTimer.stop() flickable.isMomentumActive = false @@ -111,7 +115,7 @@ Flickable { onActiveChanged: { if (!active) { - if (Math.abs(flickable.momentumVelocity) >= flickable.minMomentumVelocity) { + if (!sessionUsedMouseWheel && Math.abs(flickable.momentumVelocity) >= flickable.minMomentumVelocity) { startMomentum() } else { velocitySamples = [] diff --git a/Widgets/DankGridView.qml b/Widgets/DankGridView.qml index 03e1f3d2..35713281 100644 --- a/Widgets/DankGridView.qml +++ b/Widgets/DankGridView.qml @@ -33,6 +33,7 @@ GridView { property real lastWheelTime: 0 property real momentum: 0 property var velocitySamples: [] + property bool sessionUsedMouseWheel: false function startMomentum() { isMomentumActive = true @@ -52,10 +53,12 @@ GridView { const isMouseWheel = Math.abs(deltaY) >= 120 && (Math.abs(deltaY) % 120) === 0 if (isMouseWheel) { + sessionUsedMouseWheel = true momentumTimer.stop() isMomentumActive = false velocitySamples = [] momentum = 0 + momentumVelocity = 0 const lines = Math.floor(Math.abs(deltaY) / 120) const scrollAmount = (deltaY > 0 ? -lines : lines) * cellHeight * 0.35 @@ -68,6 +71,7 @@ GridView { contentY = newY } else { + sessionUsedMouseWheel = false momentumTimer.stop() isMomentumActive = false @@ -108,7 +112,7 @@ GridView { } onActiveChanged: { if (!active) { - if (Math.abs(momentumVelocity) >= minMomentumVelocity) { + if (!sessionUsedMouseWheel && Math.abs(momentumVelocity) >= minMomentumVelocity) { startMomentum() } else { velocitySamples = [] diff --git a/Widgets/DankListView.qml b/Widgets/DankListView.qml index 3b91c082..e79bf365 100644 --- a/Widgets/DankListView.qml +++ b/Widgets/DankListView.qml @@ -50,6 +50,7 @@ ListView { property real lastWheelTime: 0 property real momentum: 0 property var velocitySamples: [] + property bool sessionUsedMouseWheel: false function startMomentum() { isMomentumActive = true @@ -71,10 +72,12 @@ ListView { const isMouseWheel = Math.abs(deltaY) >= 120 && (Math.abs(deltaY) % 120) === 0 if (isMouseWheel) { + sessionUsedMouseWheel = true momentumTimer.stop() isMomentumActive = false velocitySamples = [] momentum = 0 + momentumVelocity = 0 const lines = Math.floor(Math.abs(deltaY) / 120) const scrollAmount = (deltaY > 0 ? -lines : lines) * mouseWheelSpeed @@ -89,6 +92,7 @@ ListView { listView.contentY = newY savedY = newY } else { + sessionUsedMouseWheel = false momentumTimer.stop() isMomentumActive = false @@ -138,7 +142,7 @@ ListView { onActiveChanged: { if (!active) { isUserScrolling = false - if (Math.abs(momentumVelocity) >= minMomentumVelocity) { + if (!sessionUsedMouseWheel && Math.abs(momentumVelocity) >= minMomentumVelocity) { startMomentum() } else { velocitySamples = []