diff --git a/crates/ui-egui/src/scroll.rs b/crates/ui-egui/src/scroll.rs index 1cbbe64669..b54015d8ec 100644 --- a/crates/ui-egui/src/scroll.rs +++ b/crates/ui-egui/src/scroll.rs @@ -380,7 +380,6 @@ impl CanvasScroll { /// on top of the anchor correction that keeps the pointer's page point in place (#1743). pub fn cancel(&mut self) { self.hit_edge(); - self.line_zoom_smoothing = false; } /// Scrolling continues without new input: keep repainting. diff --git a/crates/ui-egui/src/tests.rs b/crates/ui-egui/src/tests.rs index 927bbed645..3f2d5d3e63 100644 --- a/crates/ui-egui/src/tests.rs +++ b/crates/ui-egui/src/tests.rs @@ -8371,6 +8371,9 @@ fn mouse_wheel_scroll_speed_does_not_alter_ctrl_wheel_zoom_distance() { ctx_line_base .run_ui(egui::RawInput { events: vec![ctrl_line_event()], time: Some(1.0), ..Default::default() }, |ui| { baseline_eased_line_zoom = ui.input(|i| canvas_scroll_base.zoom(i, &opts_line_base, true)); + if baseline_eased_line_zoom != 1.0 { + canvas_scroll_base.cancel(); + } baseline_cumulative_line_zoom *= baseline_eased_line_zoom; let mut canvas_scroll_discrete = crate::scroll::CanvasScroll::default(); baseline_discrete_line_zoom = ui.input(|i| canvas_scroll_discrete.zoom(i, &opts_line_base, false)); @@ -8379,7 +8382,11 @@ fn mouse_wheel_scroll_speed_does_not_alter_ctrl_wheel_zoom_distance() { for f in 1..25 { ctx_line_base .run_ui(egui::RawInput { time: Some(1.0 + f as f64 * (1.0 / 60.0)), ..Default::default() }, |ui| { - baseline_cumulative_line_zoom *= ui.input(|i| canvas_scroll_base.zoom(i, &opts_line_base, true)); + let z = ui.input(|i| canvas_scroll_base.zoom(i, &opts_line_base, true)); + if z != 1.0 { + canvas_scroll_base.cancel(); + } + baseline_cumulative_line_zoom *= z; }) .drop_without_applying_deltas(); } @@ -8449,6 +8456,9 @@ fn mouse_wheel_scroll_speed_does_not_alter_ctrl_wheel_zoom_distance() { ctx_line .run_ui(egui::RawInput { events: vec![ctrl_line_event()], time: Some(1.0), ..Default::default() }, |ui| { let eased_zoom = ui.input(|i| canvas_scroll_eased.zoom(i, &opts, true)); + if eased_zoom != 1.0 { + canvas_scroll_eased.cancel(); + } cumulative_line_zoom *= eased_zoom; assert!( (eased_zoom - baseline_eased_line_zoom).abs() < 1e-5, @@ -8468,7 +8478,11 @@ fn mouse_wheel_scroll_speed_does_not_alter_ctrl_wheel_zoom_distance() { for f in 1..25 { ctx_line .run_ui(egui::RawInput { time: Some(1.0 + f as f64 * (1.0 / 60.0)), ..Default::default() }, |ui| { - cumulative_line_zoom *= ui.input(|i| canvas_scroll_eased.zoom(i, &opts, true)); + let z = ui.input(|i| canvas_scroll_eased.zoom(i, &opts, true)); + if z != 1.0 { + canvas_scroll_eased.cancel(); + } + cumulative_line_zoom *= z; }) .drop_without_applying_deltas(); }