From 8606a947229511b05bffc59529f9b68553e52d22 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Fri, 18 Sep 2015 05:30:55 -0700 Subject: [PATCH] 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%. --- components/compositing/compositor.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 628dff1fb9e..a35ffe80e35 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -55,6 +55,10 @@ use util::opts; 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 /// safe to save the output image. #[derive(Copy, Clone, PartialEq)] @@ -1170,7 +1174,8 @@ impl IOCompositor { } 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.send_window_size(); } @@ -1183,15 +1188,9 @@ impl IOCompositor { self.zoom_time = precise_time_s(); let old_viewport_zoom = self.viewport_zoom; - let mut viewport_zoom = self.viewport_zoom.get() * magnification; - if let Some(min_zoom) = self.min_viewport_zoom.as_ref() { - viewport_zoom = min_zoom.get().max(viewport_zoom) - } - 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); + let viewport_zoom = ScaleFactor::new((self.viewport_zoom.get() * magnification) + .min(self.max_viewport_zoom.as_ref().map_or(MAX_ZOOM, ScaleFactor::get)) + .max(self.min_viewport_zoom.as_ref().map_or(MIN_ZOOM, ScaleFactor::get))); self.viewport_zoom = viewport_zoom; self.update_zoom_transform();