mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Auto merge of #6373 - robertknight:gh5660-rob-x11_scroll_speed, r=pcwalton
Use a faster scroll speed under X11 Platforms may report scroll deltas either in chunks/lines/rows or pixels, depending on the platform API and device capabilities. If the platform reports a line/chunk-based delta then the application needs to convert the delta into a suitable number of pixels. Apple's documentation for example states that the app should interpret the delta as a number of lines or rows to scroll, depending on the type of view. This commit just hardcodes it to 57 as a starting point which matches the value that Firefox calculates as the max char height for the root frame on my system. This depends on this Glutin PR: https://github.com/tomaka/glutin/pull/483 Fixes #5660 <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6373) <!-- Reviewable:end -->
This commit is contained in:
commit
7e0f186998
3 changed files with 18 additions and 8 deletions
2
components/servo/Cargo.lock
generated
2
components/servo/Cargo.lock
generated
|
@ -476,7 +476,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "glutin"
|
||||
version = "0.0.26"
|
||||
source = "git+https://github.com/servo/glutin?branch=servo#3d39d1bb45a6f76be846ed92f946424e24109141"
|
||||
source = "git+https://github.com/servo/glutin?branch=servo#abb5ba69eb6188d24567b47e7b5a289adc595f29"
|
||||
dependencies = [
|
||||
"android_glue 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cocoa 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
2
ports/cef/Cargo.lock
generated
2
ports/cef/Cargo.lock
generated
|
@ -468,7 +468,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "glutin"
|
||||
version = "0.0.26"
|
||||
source = "git+https://github.com/servo/glutin?branch=servo#3d39d1bb45a6f76be846ed92f946424e24109141"
|
||||
source = "git+https://github.com/servo/glutin?branch=servo#abb5ba69eb6188d24567b47e7b5a289adc595f29"
|
||||
dependencies = [
|
||||
"android_glue 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cocoa 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
|
@ -28,7 +28,7 @@ use compositing::windowing::{MouseWindowEvent, WindowNavigateMsg};
|
|||
#[cfg(feature = "window")]
|
||||
use euclid::point::Point2D;
|
||||
#[cfg(feature = "window")]
|
||||
use glutin::{Api, ElementState, Event, GlRequest, MouseButton, VirtualKeyCode};
|
||||
use glutin::{Api, ElementState, Event, GlRequest, MouseButton, VirtualKeyCode, MouseScrollDelta};
|
||||
#[cfg(feature = "window")]
|
||||
use msg::constellation_msg::{KeyState, CONTROL, SHIFT, ALT};
|
||||
#[cfg(feature = "window")]
|
||||
|
@ -187,15 +187,25 @@ impl Window {
|
|||
Event::MouseWheel(delta) => {
|
||||
if self.ctrl_pressed() {
|
||||
// Ctrl-Scrollwheel simulates a "pinch zoom" gesture.
|
||||
if delta < 0 {
|
||||
let dy = match delta {
|
||||
MouseScrollDelta::LineDelta(_, dy) => dy,
|
||||
MouseScrollDelta::PixelDelta(_, dy) => dy
|
||||
};
|
||||
if dy < 0.0 {
|
||||
self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.0/1.1));
|
||||
} else if delta > 0 {
|
||||
} else if dy > 0.0 {
|
||||
self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.1));
|
||||
}
|
||||
} else {
|
||||
let dx = 0.0;
|
||||
let dy = delta as f32;
|
||||
self.scroll_window(dx, dy);
|
||||
match delta {
|
||||
MouseScrollDelta::LineDelta(dx, dy) => {
|
||||
// this should use the actual line height
|
||||
// of the frame under the mouse
|
||||
let line_height = 57.0;
|
||||
self.scroll_window(dx, dy * line_height);
|
||||
}
|
||||
MouseScrollDelta::PixelDelta(dx, dy) => self.scroll_window(dx, dy)
|
||||
}
|
||||
}
|
||||
},
|
||||
Event::Refresh => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue