summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-04-20 15:48:34 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-04-20 15:48:34 +0200
commit8a711408de26c53cf6b18045ea19c677e8edbd95 (patch)
treecd77b8fb86c814bfeac4d642ab84b8ab1d72b787 /native
parent6ad5e03d71db3dee174ac6512dceccc80e3a70a8 (diff)
downloadiced-8a711408de26c53cf6b18045ea19c677e8edbd95.tar.gz
iced-8a711408de26c53cf6b18045ea19c677e8edbd95.tar.bz2
iced-8a711408de26c53cf6b18045ea19c677e8edbd95.zip
Compare absolute offsets as well in `notify_on_scroll`
Diffstat (limited to '')
-rw-r--r--native/src/widget/scrollable.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs
index c66a166b..c9ad5947 100644
--- a/native/src/widget/scrollable.rs
+++ b/native/src/widget/scrollable.rs
@@ -913,14 +913,21 @@ fn notify_on_scroll<Message>(
// Don't publish redundant viewports to shell
if let Some(last_notified) = state.last_notified {
- let prev = last_notified.relative_offset();
- let curr = viewport.relative_offset();
+ let last_relative_offset = last_notified.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| {
(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;
}
}