diff options
author | Mukilan Thiyagarajan <mukilan@igalia.com> | 2024-11-01 16:05:43 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-01 10:35:43 +0000 |
commit | f95c4cfaba1a3ee6e35bd3deac0973895a555598 (patch) | |
tree | 4bc73d2ca34eca1d2c93b8b67ffe4ee0a7818a6e /ports/servoshell/egl/servo_glue.rs | |
parent | cc6f7c5bc42c049302480d42a5ebd70f984a1e8e (diff) | |
download | servo-f95c4cfaba1a3ee6e35bd3deac0973895a555598.tar.gz servo-f95c4cfaba1a3ee6e35bd3deac0973895a555598.zip |
servoshell: fix logical screen size calculation (#34096)
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Diffstat (limited to 'ports/servoshell/egl/servo_glue.rs')
-rw-r--r-- | ports/servoshell/egl/servo_glue.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/ports/servoshell/egl/servo_glue.rs b/ports/servoshell/egl/servo_glue.rs index d9b32401c34..9674e357aae 100644 --- a/ports/servoshell/egl/servo_glue.rs +++ b/ports/servoshell/egl/servo_glue.rs @@ -23,6 +23,7 @@ use servo::keyboard_types::{Key, KeyState, KeyboardEvent}; use servo::script_traits::{ MediaSessionActionType, MouseButton, TouchEventType, TouchId, TraversalDirection, }; +use servo::servo_geometry::DeviceIndependentPixel; use servo::style_traits::DevicePixel; use servo::webrender_api::units::DeviceIntRect; use servo::webrender_api::ScrollLocation; @@ -56,7 +57,7 @@ impl Coordinates { pub(super) struct ServoWindowCallbacks { host_callbacks: Box<dyn HostTrait>, coordinates: RefCell<Coordinates>, - density: f32, + hidpi_factor: Scale<f32, DeviceIndependentPixel, DevicePixel>, rendering_context: RenderingContext, } @@ -64,13 +65,13 @@ impl ServoWindowCallbacks { pub(super) fn new( host_callbacks: Box<dyn HostTrait>, coordinates: RefCell<Coordinates>, - density: f32, + hidpi_factor: f32, rendering_context: RenderingContext, ) -> Self { Self { host_callbacks, coordinates, - density, + hidpi_factor: Scale::new(hidpi_factor), rendering_context, } } @@ -690,14 +691,14 @@ impl EmbedderMethods for ServoEmbedderCallbacks { impl WindowMethods for ServoWindowCallbacks { fn get_coordinates(&self) -> EmbedderCoordinates { let coords = self.coordinates.borrow(); - let screen_size = (coords.viewport.size.to_f32() * Scale::new(self.density)).to_i32(); + let screen_size = (coords.viewport.size.to_f32() / self.hidpi_factor).to_i32(); EmbedderCoordinates { viewport: coords.viewport.to_box2d(), framebuffer: coords.framebuffer, window_rect: Box2D::from_origin_and_size(Point2D::zero(), screen_size), screen_size, available_screen_size: screen_size, - hidpi_factor: Scale::new(self.density), + hidpi_factor: self.hidpi_factor, } } |