diff options
author | webbeef <me@webbeef.org> | 2025-02-07 00:27:42 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-07 08:27:42 +0000 |
commit | 5cd4012e798666530de2f75b08eaa59bd8e89bb6 (patch) | |
tree | b5d5dfd1f65e317fc7167b7398290f0390abe196 /components/servo/examples | |
parent | 6393a6c750c6fcd04967faac9e3d07310af370a4 (diff) | |
download | servo-5cd4012e798666530de2f75b08eaa59bd8e89bb6.tar.gz servo-5cd4012e798666530de2f75b08eaa59bd8e89bb6.zip |
wini_minimal: trigger initial rendering and scroll properly (#35350)
Signed-off-by: webbeef <me@webbeef.org>
Diffstat (limited to 'components/servo/examples')
-rw-r--r-- | components/servo/examples/winit_minimal.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/components/servo/examples/winit_minimal.rs b/components/servo/examples/winit_minimal.rs index d7a2a43584f..0ccacbdeef3 100644 --- a/components/servo/examples/winit_minimal.rs +++ b/components/servo/examples/winit_minimal.rs @@ -18,7 +18,7 @@ use webrender_api::ScrollLocation; use webrender_traits::SurfmanRenderingContext; use winit::application::ApplicationHandler; use winit::dpi::{PhysicalPosition, PhysicalSize}; -use winit::event::WindowEvent; +use winit::event::{MouseScrollDelta, WindowEvent}; use winit::event_loop::EventLoop; use winit::raw_window_handle::{HasDisplayHandle, HasWindowHandle}; use winit::window::Window; @@ -148,6 +148,12 @@ impl ApplicationHandler<WakerEvent> for App { } } + fn user_event(&mut self, _event_loop: &winit::event_loop::ActiveEventLoop, _event: WakerEvent) { + if let Self::Running(state) = self { + state.servo.spin_event_loop(); + } + } + fn window_event( &mut self, event_loop: &winit::event_loop::ActiveEventLoop, @@ -168,11 +174,19 @@ impl ApplicationHandler<WakerEvent> for App { state.servo.present(); } }, - WindowEvent::MouseWheel { .. } => { + WindowEvent::MouseWheel { delta, .. } => { if let Self::Running(state) = self { if let Some(webview) = state.webviews.borrow().last() { + let moved_by = match delta { + MouseScrollDelta::LineDelta(horizontal, vertical) => { + LayoutVector2D::new(20. * horizontal, 20. * vertical) + }, + MouseScrollDelta::PixelDelta(pos) => { + LayoutVector2D::new(pos.x as f32, pos.y as f32) + }, + }; webview.notify_scroll_event( - ScrollLocation::Delta(LayoutVector2D::new(0., -20.)), + ScrollLocation::Delta(moved_by), DeviceIntPoint::new(10, 10), TouchEventType::Down, ); |