diff options
author | 2024-09-18 21:54:16 +0200 | |
---|---|---|
committer | 2024-09-18 21:54:16 +0200 | |
commit | fc722f1356f9720b3b922a525e8b08bedddb6a5b (patch) | |
tree | b12a41b4455fb5179cb798f87c372e88f5138ab2 | |
parent | 1cf284a850cf13591efbf6a28a98862aaa02ba08 (diff) | |
parent | 11ac9125491c4d743c393857445b9b67ea5a437a (diff) | |
download | iced-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.rs | 18 |
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 } |