Compare absolute offsets as well in notify_on_scroll

This commit is contained in:
Héctor Ramón Jiménez 2023-04-20 15:48:34 +02:00
parent 6ad5e03d71
commit 8a711408de
No known key found for this signature in database
GPG key ID: 140CC052C94F138E

View file

@ -913,14 +913,21 @@ fn notify_on_scroll<Message>(
// Don't publish redundant viewports to shell // Don't publish redundant viewports to shell
if let Some(last_notified) = state.last_notified { if let Some(last_notified) = state.last_notified {
let prev = last_notified.relative_offset(); let last_relative_offset = last_notified.relative_offset();
let curr = viewport.relative_offset(); let current_relative_offset = viewport.relative_offset();
let last_absolute_offset = last_notified.absolute_offset();
let current_absolute_offset = viewport.absolute_offset();
let unchanged = |a: f32, b: f32| { let unchanged = |a: f32, b: f32| {
(a - b).abs() <= f32::EPSILON || (a.is_nan() && b.is_nan()) (a - b).abs() <= f32::EPSILON || (a.is_nan() && b.is_nan())
}; };
if unchanged(prev.x, curr.x) && unchanged(prev.y, curr.y) { if unchanged(last_relative_offset.x, current_relative_offset.x)
&& unchanged(last_relative_offset.y, current_relative_offset.y)
&& unchanged(last_absolute_offset.x, current_absolute_offset.x)
&& unchanged(last_absolute_offset.y, current_absolute_offset.y)
{
return; return;
} }
} }