mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Generate mouse move events as well as scroll events while scrolling
This commit is contained in:
parent
6a1e948ec7
commit
ce4c53bb7f
1 changed files with 19 additions and 13 deletions
|
@ -200,10 +200,10 @@ pub unsafe extern "C" fn move_servo(servo: *mut ServoInstance, x: f32, y: f32) {
|
||||||
// Servo's cursor was moved
|
// Servo's cursor was moved
|
||||||
if let Some(servo) = servo.as_mut() {
|
if let Some(servo) = servo.as_mut() {
|
||||||
let point = DevicePoint::new(x, y);
|
let point = DevicePoint::new(x, y);
|
||||||
let (new_state, window_event) = match servo.scroll_state {
|
let (new_state, window_events) = match servo.scroll_state {
|
||||||
ScrollState::TriggerUp => (
|
ScrollState::TriggerUp => (
|
||||||
ScrollState::TriggerUp,
|
ScrollState::TriggerUp,
|
||||||
WindowEvent::MouseWindowMoveEventClass(point),
|
vec![WindowEvent::MouseWindowMoveEventClass(point)],
|
||||||
),
|
),
|
||||||
ScrollState::TriggerDown(start)
|
ScrollState::TriggerDown(start)
|
||||||
if (start - point).square_length() < DRAG_CUTOFF_SQUARED =>
|
if (start - point).square_length() < DRAG_CUTOFF_SQUARED =>
|
||||||
|
@ -212,23 +212,29 @@ pub unsafe extern "C" fn move_servo(servo: *mut ServoInstance, x: f32, y: f32) {
|
||||||
},
|
},
|
||||||
ScrollState::TriggerDown(start) => (
|
ScrollState::TriggerDown(start) => (
|
||||||
ScrollState::TriggerDragging(start, point),
|
ScrollState::TriggerDragging(start, point),
|
||||||
WindowEvent::Scroll(
|
vec![
|
||||||
ScrollLocation::Delta((point - start) * servo.scroll_scale),
|
WindowEvent::MouseWindowMoveEventClass(point),
|
||||||
start.to_i32(),
|
WindowEvent::Scroll(
|
||||||
TouchEventType::Down,
|
ScrollLocation::Delta((point - start) * servo.scroll_scale),
|
||||||
),
|
start.to_i32(),
|
||||||
|
TouchEventType::Down,
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
ScrollState::TriggerDragging(start, prev) => (
|
ScrollState::TriggerDragging(start, prev) => (
|
||||||
ScrollState::TriggerDragging(start, point),
|
ScrollState::TriggerDragging(start, point),
|
||||||
WindowEvent::Scroll(
|
vec![
|
||||||
ScrollLocation::Delta((point - prev) * servo.scroll_scale),
|
WindowEvent::MouseWindowMoveEventClass(point),
|
||||||
start.to_i32(),
|
WindowEvent::Scroll(
|
||||||
TouchEventType::Move,
|
ScrollLocation::Delta((point - prev) * servo.scroll_scale),
|
||||||
),
|
start.to_i32(),
|
||||||
|
TouchEventType::Move,
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
servo.scroll_state = new_state;
|
servo.scroll_state = new_state;
|
||||||
servo.servo.handle_events(vec![window_event]);
|
servo.servo.handle_events(window_events);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue