# HG changeset patch # User Chris Cannam # Date 1556718051 -3600 # Node ID ce5f80a7c697a6044f7228a5b788a88c4b939bf1 # Parent 4b7fc925a5ce7c6fc28b9fdb8393e0ff7b575018 Don't discard large wheel deltas; just clamp them diff -r 4b7fc925a5ce -r ce5f80a7c697 view/Pane.cpp --- a/view/Pane.cpp Wed May 01 11:46:09 2019 +0100 +++ b/view/Pane.cpp Wed May 01 14:40:51 2019 +0100 @@ -2298,11 +2298,19 @@ // Coarse wheel information (or vertical zoom, which is // necessarily coarse itself) - // Sometimes on Linux we're seeing absurdly extreme angles on - // the first wheel event -- discard those entirely - if (abs(m_pendingWheelAngle) >= 600) { - m_pendingWheelAngle = 0; - return; + // Sometimes on Linux we're seeing very extreme angles on the + // first wheel event. They could be spurious, or they could be + // a result of the user frantically wheeling away while the + // pane was unresponsive for some reason. We don't want to + // discard them, as that makes the application feel even less + // responsive, but if we take them literally we risk changing + // the view so radically that the user won't recognise what + // has happened. Clamp them instead. + if (m_pendingWheelAngle > 600) { + m_pendingWheelAngle = 600; + } + if (m_pendingWheelAngle < -600) { + m_pendingWheelAngle = -600; } while (abs(m_pendingWheelAngle) >= 120) {