mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
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
This commit is contained in:
parent
7f4929d52d
commit
410924d94b
1 changed files with 8 additions and 1 deletions
|
@ -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),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue