changeset 870:0cdaf382f21e tonioni

Discard wildly excessive wheel events
author Chris Cannam
date Mon, 10 Nov 2014 09:54:20 +0000
parents 6c08e99ca0f3
children e04d3c54d0ee
files view/Pane.cpp
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/view/Pane.cpp	Mon Nov 10 09:20:06 2014 +0000
+++ b/view/Pane.cpp	Mon Nov 10 09:54:20 2014 +0000
@@ -2286,6 +2286,13 @@
         // 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) > 1000) {
+            m_pendingWheelAngle = 0;
+            return;
+        }
+        
         while (abs(m_pendingWheelAngle) >= 120) {
 
             int sign = (m_pendingWheelAngle < 0 ? -1 : 1);