mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Set default limits on page zoom and pinch zoom
Currently these both clamp to 100% in one direction and are unbounded in the other direction. This sets default zoom constraints of 10% to 800%.
This commit is contained in:
parent
9333f028e8
commit
8606a94722
1 changed files with 9 additions and 10 deletions
|
@ -55,6 +55,10 @@ use util::opts;
|
||||||
|
|
||||||
const BUFFER_MAP_SIZE: usize = 10000000;
|
const BUFFER_MAP_SIZE: usize = 10000000;
|
||||||
|
|
||||||
|
// Default viewport constraints
|
||||||
|
const MAX_ZOOM: f32 = 8.0;
|
||||||
|
const MIN_ZOOM: f32 = 0.1;
|
||||||
|
|
||||||
/// Holds the state when running reftests that determines when it is
|
/// Holds the state when running reftests that determines when it is
|
||||||
/// safe to save the output image.
|
/// safe to save the output image.
|
||||||
#[derive(Copy, Clone, PartialEq)]
|
#[derive(Copy, Clone, PartialEq)]
|
||||||
|
@ -1170,7 +1174,8 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_zoom_window_event(&mut self, magnification: f32) {
|
fn on_zoom_window_event(&mut self, magnification: f32) {
|
||||||
self.page_zoom = ScaleFactor::new((self.page_zoom.get() * magnification).max(1.0));
|
self.page_zoom = ScaleFactor::new((self.page_zoom.get() * magnification)
|
||||||
|
.max(MIN_ZOOM).min(MAX_ZOOM));
|
||||||
self.update_zoom_transform();
|
self.update_zoom_transform();
|
||||||
self.send_window_size();
|
self.send_window_size();
|
||||||
}
|
}
|
||||||
|
@ -1183,15 +1188,9 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
||||||
self.zoom_time = precise_time_s();
|
self.zoom_time = precise_time_s();
|
||||||
let old_viewport_zoom = self.viewport_zoom;
|
let old_viewport_zoom = self.viewport_zoom;
|
||||||
|
|
||||||
let mut viewport_zoom = self.viewport_zoom.get() * magnification;
|
let viewport_zoom = ScaleFactor::new((self.viewport_zoom.get() * magnification)
|
||||||
if let Some(min_zoom) = self.min_viewport_zoom.as_ref() {
|
.min(self.max_viewport_zoom.as_ref().map_or(MAX_ZOOM, ScaleFactor::get))
|
||||||
viewport_zoom = min_zoom.get().max(viewport_zoom)
|
.max(self.min_viewport_zoom.as_ref().map_or(MIN_ZOOM, ScaleFactor::get)));
|
||||||
}
|
|
||||||
let viewport_zoom = self.max_viewport_zoom
|
|
||||||
.as_ref()
|
|
||||||
.map_or(1., |z| z.get())
|
|
||||||
.min(viewport_zoom);
|
|
||||||
let viewport_zoom = ScaleFactor::new(viewport_zoom);
|
|
||||||
self.viewport_zoom = viewport_zoom;
|
self.viewport_zoom = viewport_zoom;
|
||||||
|
|
||||||
self.update_zoom_transform();
|
self.update_zoom_transform();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue