Skip to content
Permalink
Browse files

Snap scrolling to major axis of movement

This is what Safari does, and it leads to much better behavior, in particular wrt overscrolling. It does cause a staircase effect when scrolling diagonally, which again Safari has, too. I don't think that bad, because it should occur very rarely in practice.

Fixes #10341
  • Loading branch information...
tschneidereit committed Apr 3, 2016
1 parent 7f4929d commit 410924d94bd17dc75a4ff1c2af0ca88a94692dc4
Showing with 8 additions and 1 deletion.
  1. +8 −1 ports/glutin/window.rs
@@ -260,7 +260,14 @@ impl Window {
}

/// Helper function to send a scroll event.
fn scroll_window(&self, dx: f32, dy: f32, phase: TouchEventType) {
fn scroll_window(&self, mut dx: f32, mut dy: f32, phase: TouchEventType) {
// Scroll events snap to the major axis of movement, with vertical
// preferred over horizontal.
if dy.abs() >= dx.abs() {
dx = 0.0;
} else {
dy = 0.0;
}
let mouse_pos = self.mouse_pos.get();
let event = WindowEvent::Scroll(Point2D::typed(dx as f32, dy as f32),
Point2D::typed(mouse_pos.x as i32, mouse_pos.y as i32),

0 comments on commit 410924d

Please sign in to comment.
You can’t perform that action at this time.