summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
Diffstat (limited to 'native')
-rw-r--r--native/src/widget/scrollable.rs33
1 files changed, 23 insertions, 10 deletions
diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs
index 17a1363e..ab1a203b 100644
--- a/native/src/widget/scrollable.rs
+++ b/native/src/widget/scrollable.rs
@@ -102,6 +102,17 @@ impl<'a, Message, Renderer> Scrollable<'a, Message, Renderer> {
}
}
+fn scroll_percentage(
+ bounds: Rectangle,
+ scroller_bounds: Rectangle,
+ scroller_grabbed_at: f32,
+ cursor_position: Point,
+) -> f32 {
+ (cursor_position.y + bounds.y
+ - scroller_bounds.height * scroller_grabbed_at)
+ / (bounds.height - scroller_bounds.height)
+}
+
impl<'a, Message, Renderer> Widget<Message, Renderer>
for Scrollable<'a, Message, Renderer>
where
@@ -195,12 +206,13 @@ where
}
};
- let scroll_percentage = (cursor_position.y + bounds.y
- - scroller_bounds.height * scroller_grabbed_at)
- / (bounds.height - scroller_bounds.height);
-
self.state.scroll_to(
- scroll_percentage,
+ scroll_percentage(
+ bounds,
+ scroller_bounds,
+ scroller_grabbed_at,
+ cursor_position,
+ ),
bounds,
content_bounds,
);
@@ -216,12 +228,13 @@ where
if let Some(scroller_grabbed_at) =
self.state.scroller_grabbed_at
{
- let scroll_percentage = (cursor_position.y + bounds.y
- - scroller_bounds.height * scroller_grabbed_at)
- / (bounds.height - scroller_bounds.height);
-
self.state.scroll_to(
- scroll_percentage,
+ scroll_percentage(
+ bounds,
+ scroller_bounds,
+ scroller_grabbed_at,
+ cursor_position,
+ ),
bounds,
content_bounds,
);