Add ScrollView::{inner_size, is_at_{bottom, top, left, right}}

This commit is contained in:
Alexandre Bury 2019-06-23 21:53:11 -04:00
parent 0c8a7b2708
commit ad23dfe59b

View File

@ -40,6 +40,39 @@ where
self.core.content_viewport()
}
/// Returns the size of the content view, as it was on the last layout
/// phase.
///
/// This is only the size the content _thinks_ it has, and may be larger
/// than the actual size used by this `ScrollView`.
pub fn inner_size(&self) -> Vec2 {
self.core.inner_size()
}
/// Returns `true` if the top row of the content is in view.
pub fn is_at_top(&self) -> bool {
self.content_viewport().top() == 0
}
/// Returns `true` if the bottom row of the content is in view.
pub fn is_at_bottom(&self) -> bool {
// The viewport indicates which row is in view.
// So the bottom row will be (height - 1)
(1 + self.content_viewport().bottom()) >= self.inner_size().y
}
/// Return `true` if the left-most column of the content is in view.
pub fn is_at_left_edge(&self) -> bool {
self.content_viewport().left() == 0
}
/// Return `true` if the right-most column of the content is in view.
pub fn is_at_right_edge(&self) -> bool {
// The viewport indicates which row is in view.
// So the right-most column will be (width - 1)
(1 + self.content_viewport().right()) >= self.inner_size().x
}
/// Defines the way scrolling is adjusted on content or size change.
///
/// The scroll strategy defines how the scrolling position is adjusted