Distinguish reported and rendered preview scroll offsets

This commit is contained in:
2026-09-13 03:30:09 -07:00
parent bebf9f594c
commit feab2020d8
@@ -435,11 +435,15 @@ async fn details_remount_restores_wheel_offset_before_any_rescroll() {
let mut mounted = Mounted::new(&app);
let reports = mounted.wheel(&app);
assert_eq!(reports.len(), 1, "one actual preview scroll report");
assert!(matches!(
reports[0],
Message::SourceRename(Event::PreviewScrolled(..))
));
let reported_offset = match &reports[0] {
Message::SourceRename(Event::PreviewScrolled(_, _, _, offset)) => *offset,
_ => panic!("expected an actual preview scroll report"),
};
assert!(reported_offset.is_finite() && reported_offset > 0.);
let offset = mounted.offset(&app);
// Iced reports fractional absolute offsets but exposes rounded display
// translation to widget operations. Preserve both representations exactly.
assert_eq!(reported_offset.round(), offset);
assert!(
offset > 10.,
"real wheel input must move the overflowing fixture"
@@ -457,7 +461,7 @@ async fn details_remount_restores_wheel_offset_before_any_rescroll() {
assert_eq!(evidence(&app), before);
assert_eq!(
app.source_rename.form.as_ref().unwrap().preview_offset,
offset
reported_offset
);
let details = app.update(Message::SourceRename(Event::Details(invocation, true)));
@@ -493,7 +497,7 @@ async fn details_remount_restores_wheel_offset_before_any_rescroll() {
let form = app.source_rename.form.as_ref().unwrap();
assert_eq!((form.file, form.hunk, form.line, form.segment), page);
assert_eq!(form.approval.as_ref().unwrap().id, approval);
assert_eq!(form.preview_offset, offset);
assert_eq!(form.preview_offset, reported_offset);
assert!(!app.source_rename_envelope(&stale));
let task = app.update(Message::SourceRename(stale));
assert_eq!(mounted.execute(&app, task).await, 0);