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 mut mounted = Mounted::new(&app);
let reports = mounted.wheel(&app); let reports = mounted.wheel(&app);
assert_eq!(reports.len(), 1, "one actual preview scroll report"); assert_eq!(reports.len(), 1, "one actual preview scroll report");
assert!(matches!( let reported_offset = match &reports[0] {
reports[0], Message::SourceRename(Event::PreviewScrolled(_, _, _, offset)) => *offset,
Message::SourceRename(Event::PreviewScrolled(..)) _ => panic!("expected an actual preview scroll report"),
)); };
assert!(reported_offset.is_finite() && reported_offset > 0.);
let offset = mounted.offset(&app); 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!( assert!(
offset > 10., offset > 10.,
"real wheel input must move the overflowing fixture" "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!(evidence(&app), before);
assert_eq!( assert_eq!(
app.source_rename.form.as_ref().unwrap().preview_offset, app.source_rename.form.as_ref().unwrap().preview_offset,
offset reported_offset
); );
let details = app.update(Message::SourceRename(Event::Details(invocation, true))); 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(); let form = app.source_rename.form.as_ref().unwrap();
assert_eq!((form.file, form.hunk, form.line, form.segment), page); assert_eq!((form.file, form.hunk, form.line, form.segment), page);
assert_eq!(form.approval.as_ref().unwrap().id, approval); 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)); assert!(!app.source_rename_envelope(&stale));
let task = app.update(Message::SourceRename(stale)); let task = app.update(Message::SourceRename(stale));
assert_eq!(mounted.execute(&app, task).await, 0); assert_eq!(mounted.execute(&app, task).await, 0);