diff --git a/apps/desktop-gpui/src/editor_tabs.rs b/apps/desktop-gpui/src/editor_tabs.rs index a793647488b..d59830d162f 100644 --- a/apps/desktop-gpui/src/editor_tabs.rs +++ b/apps/desktop-gpui/src/editor_tabs.rs @@ -358,8 +358,7 @@ impl CameraSlider { match self { // `minValue={20} maxValue={80} step={0.1}` (`:3204-3206`). Self::Size => (20., 80., 0.1), - // `minValue={10} maxValue={60}` (`:3213-3215`). - Self::ZoomSize => (10., 60., 0.1), + Self::ZoomSize => (10., 100., 0.1), _ => (0., 100., 0.1), } } @@ -369,8 +368,7 @@ impl CameraSlider { let shadow = camera.advanced_shadow.as_ref(); match self { Self::Size => camera.size, - // `project.camera.zoomSize ?? 60` - Self::ZoomSize => camera.zoom_size.unwrap_or(60.), + Self::ZoomSize => camera.scale_during_zoom * 100., Self::Rounding => camera.rounding, Self::Shadow => camera.shadow, Self::ShadowSize => shadow.map_or(UI_SHADOW_FALLBACK.size, |s| s.size), @@ -1004,7 +1002,7 @@ impl EditorWindow { let camera = &mut project.camera; match slider { CameraSlider::Size => camera.size = value, - CameraSlider::ZoomSize => camera.zoom_size = Some(value), + CameraSlider::ZoomSize => camera.scale_during_zoom = value / 100., CameraSlider::Rounding => camera.rounding = value, CameraSlider::Shadow => camera.shadow = value, // `...(project.camera.advancedShadow ?? {50, 18, 50})` @@ -3473,7 +3471,7 @@ mod tests { #[test] fn every_tab_slider_has_the_range_its_call_site_declares() { assert_eq!(CameraSlider::Size.limits(), (20., 80., 0.1)); - assert_eq!(CameraSlider::ZoomSize.limits(), (10., 60., 0.1)); + assert_eq!(CameraSlider::ZoomSize.limits(), (10., 100., 0.1)); assert_eq!(CameraSlider::ShadowBlur.limits(), (0., 100., 0.1)); assert_eq!(AudioSlider::MicVolume.limits(), (-30., 10., 0.1)); assert_eq!(CursorSlider::Size.limits(), (20., 300., 1.)); @@ -3487,6 +3485,16 @@ mod tests { assert_eq!(CaptionSlider::FadeDuration.limits(), (0., 50., 1.)); } + #[test] + fn camera_zoom_size_slider_shows_the_rendered_scale() { + let mut project = ProjectConfiguration::default(); + assert_eq!(CameraSlider::ZoomSize.read(&project), 70.); + project.camera.scale_during_zoom = 0.4; + assert_eq!(CameraSlider::ZoomSize.read(&project), 40.); + project.camera.scale_during_zoom = 1.; + assert_eq!(CameraSlider::ZoomSize.read(&project), 100.); + } + #[test] fn the_percent_sliders_read_and_write_the_same_number() { // `value={[getSetting("fadeDuration") * 100]}` / `v[0] / 100`.