mirror of
https://github.com/servo/servo.git
synced 2025-08-01 11:40:30 +01:00
compositor: Request reflow when doing a page zooming (#38166)
Request a reflow when doing page zoom and only modify the scaling of the WebView scene after the first root pipeline display list with the new zoom is ready. In addition: - store zoom limits in `Scale` types - send `ViewportDetails` along with the display list so that we can detect when the root pipeline scale is ready. Testing: This is quite hard to test as it requires verification that contents are zoomed appropriately at the right time. Fixes: #38091. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
3d2f0d1be5
commit
8d5faa9bf9
10 changed files with 111 additions and 44 deletions
|
@ -38,7 +38,7 @@ use style::queries::values::PrefersColorScheme;
|
|||
use style_traits::CSSPixel;
|
||||
use url::Url;
|
||||
use uuid::Uuid;
|
||||
use webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize, DevicePixel};
|
||||
use webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize, DevicePixel, LayoutSize};
|
||||
|
||||
pub use crate::input_events::*;
|
||||
pub use crate::webdriver::*;
|
||||
|
@ -319,6 +319,14 @@ pub struct ViewportDetails {
|
|||
pub hidpi_scale_factor: Scale<f32, CSSPixel, DevicePixel>,
|
||||
}
|
||||
|
||||
impl ViewportDetails {
|
||||
/// Convert this [`ViewportDetails`] size to a [`LayoutSize`]. This is the same numerical
|
||||
/// value as [`Self::size`], because a `LayoutPixel` is the same as a `CSSPixel`.
|
||||
pub fn layout_size(&self) -> LayoutSize {
|
||||
Size2D::from_untyped(self.size.to_untyped())
|
||||
}
|
||||
}
|
||||
|
||||
/// Unlike [`ScreenGeometry`], the data is in device-independent pixels
|
||||
/// to be used by DOM APIs
|
||||
#[derive(Default, Deserialize, Serialize)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue