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 | |
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>
-rw-r--r-- | ports/servoshell/desktop/headed_window.rs | 8 | ||||
-rw-r--r-- | ports/servoshell/egl/servo_glue.rs | 11 |
2 files changed, 10 insertions, 9 deletions
diff --git a/ports/servoshell/desktop/headed_window.rs b/ports/servoshell/desktop/headed_window.rs index 70dc1d480e5..8d71fce5e44 100644 --- a/ports/servoshell/desktop/headed_window.rs +++ b/ports/servoshell/desktop/headed_window.rs @@ -99,9 +99,9 @@ impl Window { || (monitor.size(), monitor.scale_factor()), |size| (PhysicalSize::new(size.width, size.height), 1.0), ); - let screen_scale: Scale<f64, DevicePixel, DeviceIndependentPixel> = + let screen_scale: Scale<f64, DeviceIndependentPixel, DevicePixel> = Scale::new(screen_scale); - let screen_size = (winit_size_to_euclid_size(screen_size).to_f64() * screen_scale).to_u32(); + let screen_size = (winit_size_to_euclid_size(screen_size).to_f64() / screen_scale).to_u32(); // Initialize surfman let display_handle = winit_window @@ -534,9 +534,9 @@ impl WindowMethods for Window { let window_origin = self.winit_window.outer_position().unwrap_or_default(); let window_origin = winit_position_to_euclid_point(window_origin).to_i32(); let window_rect = DeviceIntRect::from_origin_and_size(window_origin, window_size); - let window_scale: Scale<f64, DevicePixel, DeviceIndependentPixel> = + let window_scale: Scale<f64, DeviceIndependentPixel, DevicePixel> = Scale::new(self.winit_window.scale_factor()); - let window_rect = (window_rect.to_f64() * window_scale).to_i32(); + let window_rect = (window_rect.to_f64() / window_scale).to_i32(); let viewport_origin = DeviceIntPoint::zero(); // bottom left let viewport_size = winit_size_to_euclid_size(self.winit_window.inner_size()).to_f32(); 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, } } |