aboutsummaryrefslogtreecommitdiffstats
path: root/components/servo/examples
diff options
context:
space:
mode:
authorwebbeef <me@webbeef.org>2025-02-07 00:27:42 -0800
committerGitHub <noreply@github.com>2025-02-07 08:27:42 +0000
commit5cd4012e798666530de2f75b08eaa59bd8e89bb6 (patch)
treeb5d5dfd1f65e317fc7167b7398290f0390abe196 /components/servo/examples
parent6393a6c750c6fcd04967faac9e3d07310af370a4 (diff)
downloadservo-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.rs20
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,
);