[Linux] Corrected values for mouse move and scroll events
authorthefiddler <stapostol@gmail.com>
Wed, 16 Jul 2014 12:25:55 +0000 (14:25 +0200)
committerthefiddler <stapostol@gmail.com>
Wed, 16 Jul 2014 12:28:28 +0000 (14:28 +0200)
Source/OpenTK/Platform/Linux/LinuxNativeWindow.cs

index ee6edf8..d27557d 100644 (file)
@@ -183,29 +183,31 @@ namespace OpenTK.Platform.Linux
                 {
                     OnMouseUp(i);
                 }
+            }
 
-                if (mouse.Position != previous_mouse.Position)
-                {
-                    OnMouseMove(mouse.X, mouse.Y);
-                }
+            if (mouse.X != previous_mouse.X || mouse.Y != previous_mouse.Y)
+            {
+                OnMouseMove(mouse.X, mouse.Y);
+            }
 
-                if (mouse.Scroll != previous_mouse.Scroll)
-                {
-                    OnMouseWheel(mouse.Scroll.X, mouse.Scroll.Y);
-                }
+            if (mouse.Scroll != previous_mouse.Scroll)
+            {
+                float dx = mouse.Scroll.X - previous_mouse.Scroll.X;
+                float dy = mouse.Scroll.Y - previous_mouse.Scroll.Y;
+                OnMouseWheel(dx, dy);
+            }
 
-                // Note: focus follows mouse. Literally.
-                bool cursor_in = Bounds.Contains(new Point(mouse.X, mouse.Y));
-                if (!cursor_in && Focused)
-                {
-                    OnMouseLeave(EventArgs.Empty);
-                    SetFocus(false);
-                }
-                else if (cursor_in && !Focused)
-                {
-                    OnMouseEnter(EventArgs.Empty);
-                    SetFocus(true);
-                }
+            // Note: focus follows mouse. Literally.
+            bool cursor_in = Bounds.Contains(new Point(mouse.X, mouse.Y));
+            if (!cursor_in && Focused)
+            {
+                OnMouseLeave(EventArgs.Empty);
+                SetFocus(false);
+            }
+            else if (cursor_in && !Focused)
+            {
+                OnMouseEnter(EventArgs.Empty);
+                SetFocus(true);
             }
 
             return mouse;