Updated servo revision and fix api changes

This commit is contained in:
burhankhanzada 2025-11-06 02:14:57 +01:00 committed by Burhan Khanzada
parent 9ad155e69a
commit e1962756d4
2 changed files with 14 additions and 15 deletions

View file

@ -43,8 +43,8 @@ wgpu-hal = "27.0.2"
wgpu-core = "27.0.1"
wgpu = { version = "27.0.1", features = ["metal"] }
libservo = { git = "https://github.com/servo/servo", rev = "6357fc8" }
embedder_traits = { git = "https://github.com/servo/servo", rev = "6357fc8", features = ["baked-default-resources"] }
libservo = { git = "https://github.com/servo/servo", rev = "8433bdab" }
embedder_traits = { git = "https://github.com/servo/servo", rev = "8433bdab", features = ["baked-default-resources"] }
i-slint-core = { path = "../../internal/core" }

View file

@ -6,18 +6,15 @@ use std::rc::Rc;
use url::Url;
use winit::dpi::PhysicalSize;
use euclid::{Box2D, Point2D, Size2D, Vector2D};
use euclid::{Box2D, Point2D, Size2D};
use i_slint_core::items::{ColorScheme, PointerEvent, PointerEventKind};
use slint::{ComponentHandle, platform::PointerEventButton};
use servo::{
InputEvent, MouseButton, MouseButtonAction, MouseButtonEvent, MouseMoveEvent, Theme,
TouchEvent, TouchEventType, TouchId,
webrender_api::{
ScrollLocation,
units::{DevicePixel, DevicePoint},
},
InputEvent, MouseButton, MouseButtonAction, MouseButtonEvent, MouseMoveEvent, Scroll, Theme,
TouchEvent, TouchEventType, TouchId, WebViewPoint,
webrender_api::units::{DevicePixel, DevicePoint, DeviceVector2D},
};
use crate::{
@ -88,11 +85,12 @@ fn on_scroll(adapter: Rc<SlintServoAdapter>) {
let point = DevicePoint::new(initial_x * scale_factor, initial_y * scale_factor);
let moved_by = Vector2D::new(delta_x, delta_y);
let moved_by = DeviceVector2D::new(delta_x, delta_y);
// Invert delta to match Servo's coordinate system
let servo_delta = -moved_by;
webview.notify_scroll_event(ScrollLocation::Delta(servo_delta), point.to_i32());
webview.notify_scroll_event(Scroll::Delta(servo_delta.into()), point.into());
});
}
@ -148,7 +146,8 @@ fn on_pointer(adapter: Rc<SlintServoAdapter>) {
let point = DevicePoint::new(x * scale_factor, y * scale_factor);
let input_event = convert_slint_pointer_event_to_servo_input_event(&pointer_event, point);
let input_event =
convert_slint_pointer_event_to_servo_input_event(&pointer_event, point.into());
webview.notify_input_event(input_event);
});
@ -158,7 +157,7 @@ fn on_pointer(adapter: Rc<SlintServoAdapter>) {
/// Distinguishes between touch and mouse events for proper handling.
fn convert_slint_pointer_event_to_servo_input_event(
pointer_event: &PointerEvent,
point: DevicePoint,
point: WebViewPoint,
) -> InputEvent {
if pointer_event.is_touch {
handle_touch_events(pointer_event, point)
@ -167,7 +166,7 @@ fn convert_slint_pointer_event_to_servo_input_event(
}
}
fn handle_touch_events(pointer_event: &PointerEvent, point: DevicePoint) -> InputEvent {
fn handle_touch_events(pointer_event: &PointerEvent, point: WebViewPoint) -> InputEvent {
let touch_id = TouchId(1);
let touch_event = match pointer_event.kind {
PointerEventKind::Down => TouchEvent::new(TouchEventType::Down, touch_id, point),
@ -177,7 +176,7 @@ fn handle_touch_events(pointer_event: &PointerEvent, point: DevicePoint) -> Inpu
InputEvent::Touch(touch_event)
}
fn _handle_mouse_events(pointer_event: &PointerEvent, point: DevicePoint) -> InputEvent {
fn _handle_mouse_events(pointer_event: &PointerEvent, point: WebViewPoint) -> InputEvent {
let button = _get_mouse_button(pointer_event);
match pointer_event.kind {
PointerEventKind::Down => {