summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2024-09-18 21:54:16 +0200
committerLibravatar GitHub <noreply@github.com>2024-09-18 21:54:16 +0200
commitfc722f1356f9720b3b922a525e8b08bedddb6a5b (patch)
treeb12a41b4455fb5179cb798f87c372e88f5138ab2
parent1cf284a850cf13591efbf6a28a98862aaa02ba08 (diff)
parent11ac9125491c4d743c393857445b9b67ea5a437a (diff)
downloadiced-fc722f1356f9720b3b922a525e8b08bedddb6a5b.tar.gz
iced-fc722f1356f9720b3b922a525e8b08bedddb6a5b.tar.bz2
iced-fc722f1356f9720b3b922a525e8b08bedddb6a5b.zip
Merge pull request #2584 from iced-rs/fix/scrollable-transactions
Fix `scrollable` transactions when `on_scroll` is not set
-rw-r--r--widget/src/scrollable.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/widget/src/scrollable.rs b/widget/src/scrollable.rs
index a5610166..00a6b556 100644
--- a/widget/src/scrollable.rs
+++ b/widget/src/scrollable.rs
@@ -760,13 +760,17 @@ where
content_bounds,
);
- if notify_scroll(
+ let has_scrolled = notify_scroll(
state,
&self.on_scroll,
bounds,
content_bounds,
shell,
- ) {
+ );
+
+ let in_transaction = state.last_scrolled.is_some();
+
+ if has_scrolled || in_transaction {
event::Status::Captured
} else {
event::Status::Ignored
@@ -1194,11 +1198,6 @@ fn notify_viewport<Message>(
return false;
}
- let Some(on_scroll) = on_scroll else {
- state.last_notified = None;
- return false;
- };
-
let viewport = Viewport {
offset_x: state.offset_x,
offset_y: state.offset_y,
@@ -1229,9 +1228,12 @@ fn notify_viewport<Message>(
}
}
- shell.publish(on_scroll(viewport));
state.last_notified = Some(viewport);
+ if let Some(on_scroll) = on_scroll {
+ shell.publish(on_scroll(viewport));
+ }
+
true
}