pub struct ScrollArea { /* private fields */ }Expand description
Add vertical and/or horizontal scrolling to a contained Ui.
egui::ScrollArea::vertical().show(ui, |ui| {
// Add a lot of widgets here.
});You can scroll to an element using Response::scroll_to_me, Ui::scroll_to_cursor and Ui::scroll_to_rect.
Implementations§
Source§impl ScrollArea
impl ScrollArea
Sourcepub fn horizontal() -> ScrollArea
pub fn horizontal() -> ScrollArea
Create a horizontal scroll area.
Sourcepub fn vertical() -> ScrollArea
pub fn vertical() -> ScrollArea
Create a vertical scroll area.
Sourcepub fn both() -> ScrollArea
pub fn both() -> ScrollArea
Create a bi-directional (horizontal and vertical) scroll area.
Sourcepub fn neither() -> ScrollArea
pub fn neither() -> ScrollArea
Create a scroll area where both direction of scrolling is disabled. It’s unclear why you would want to do this.
Sourcepub fn new(has_bar: [bool; 2]) -> ScrollArea
pub fn new(has_bar: [bool; 2]) -> ScrollArea
Create a scroll area where you decide which axis has scrolling enabled.
For instance, ScrollAre::new([true, false]) enable horizontal scrolling.
Sourcepub fn max_width(self, max_width: f32) -> ScrollArea
pub fn max_width(self, max_width: f32) -> ScrollArea
The maximum width of the outer frame of the scroll area.
Use f32::INFINITY if you want the scroll area to expand to fit the surrounding Ui (default).
See also Self::auto_shrink.
Sourcepub fn max_height(self, max_height: f32) -> ScrollArea
pub fn max_height(self, max_height: f32) -> ScrollArea
The maximum height of the outer frame of the scroll area.
Use f32::INFINITY if you want the scroll area to expand to fit the surrounding Ui (default).
See also Self::auto_shrink.
Sourcepub fn min_scrolled_width(self, min_scrolled_width: f32) -> ScrollArea
pub fn min_scrolled_width(self, min_scrolled_width: f32) -> ScrollArea
The minimum width of a horizontal scroll area which requires scroll bars.
The ScrollArea will only become smaller than this if the content is smaller than this
(and so we don’t require scroll bars).
Default: 64.0.
Sourcepub fn min_scrolled_height(self, min_scrolled_height: f32) -> ScrollArea
pub fn min_scrolled_height(self, min_scrolled_height: f32) -> ScrollArea
The minimum height of a vertical scroll area which requires scroll bars.
The ScrollArea will only become smaller than this if the content is smaller than this
(and so we don’t require scroll bars).
Default: 64.0.
Sourcepub fn always_show_scroll(self, always_show_scroll: bool) -> ScrollArea
pub fn always_show_scroll(self, always_show_scroll: bool) -> ScrollArea
If false (default), the scroll bar will be hidden when not needed/
If true, the scroll bar will always be displayed even if not needed.
Sourcepub fn id_source(self, id_source: impl Hash) -> ScrollArea
pub fn id_source(self, id_source: impl Hash) -> ScrollArea
A source for the unique Id, e.g. .id_source("second_scroll_area") or .id_source(loop_index).
Sourcepub fn scroll_offset(self, offset: Vec2) -> ScrollArea
pub fn scroll_offset(self, offset: Vec2) -> ScrollArea
Set the horizontal and vertical scroll offset position.
See also: Self::vertical_scroll_offset, Self::horizontal_scroll_offset,
Ui::scroll_to_cursor and
Response::scroll_to_me
Sourcepub fn vertical_scroll_offset(self, offset: f32) -> ScrollArea
pub fn vertical_scroll_offset(self, offset: f32) -> ScrollArea
Set the vertical scroll offset position.
See also: Self::scroll_offset, Ui::scroll_to_cursor and
Response::scroll_to_me
Sourcepub fn horizontal_scroll_offset(self, offset: f32) -> ScrollArea
pub fn horizontal_scroll_offset(self, offset: f32) -> ScrollArea
Set the horizontal scroll offset position.
See also: Self::scroll_offset, Ui::scroll_to_cursor and
Response::scroll_to_me
Sourcepub fn hscroll(self, hscroll: bool) -> ScrollArea
pub fn hscroll(self, hscroll: bool) -> ScrollArea
Turn on/off scrolling on the horizontal axis.
Sourcepub fn vscroll(self, vscroll: bool) -> ScrollArea
pub fn vscroll(self, vscroll: bool) -> ScrollArea
Turn on/off scrolling on the vertical axis.
Sourcepub fn scroll2(self, has_bar: [bool; 2]) -> ScrollArea
pub fn scroll2(self, has_bar: [bool; 2]) -> ScrollArea
Turn on/off scrolling on the horizontal/vertical axes.
Sourcepub fn enable_scrolling(self, enable: bool) -> ScrollArea
pub fn enable_scrolling(self, enable: bool) -> ScrollArea
Control the scrolling behavior
If true (default), the scroll area will respond to user scrolling
If false, the scroll area will not respond to user scrolling
This can be used, for example, to optionally freeze scrolling while the user
is inputing text in a TextEdit widget contained within the scroll area.
This controls both scrolling directions.
Sourcepub fn auto_shrink(self, auto_shrink: [bool; 2]) -> ScrollArea
pub fn auto_shrink(self, auto_shrink: [bool; 2]) -> ScrollArea
For each axis, should the containing area shrink if the content is small?
If true, egui will add blank space outside the scroll area. If false, egui will add blank space inside the scroll area.
Default: [true; 2].
Sourcepub fn stick_to_right(self, stick: bool) -> ScrollArea
pub fn stick_to_right(self, stick: bool) -> ScrollArea
The scroll handle will stick to the rightmost position even while the content size changes dynamically. This can be useful to simulate text scrollers coming in from right hand side. The scroll handle remains stuck until user manually changes position. Once “unstuck” it will remain focused on whatever content viewport the user left it on. If the scroll handle is dragged all the way to the right it will again become stuck and remain there until manually pulled from the end position.
Sourcepub fn stick_to_bottom(self, stick: bool) -> ScrollArea
pub fn stick_to_bottom(self, stick: bool) -> ScrollArea
The scroll handle will stick to the bottom position even while the content size changes dynamically. This can be useful to simulate terminal UIs or log/info scrollers. The scroll handle remains stuck until user manually changes position. Once “unstuck” it will remain focused on whatever content viewport the user left it on. If the scroll handle is dragged to the bottom it will again become stuck and remain there until manually pulled from the end position.
Source§impl ScrollArea
impl ScrollArea
Sourcepub fn show<R>(
self,
ui: &mut Ui,
add_contents: impl FnOnce(&mut Ui) -> R,
) -> ScrollAreaOutput<R>
pub fn show<R>( self, ui: &mut Ui, add_contents: impl FnOnce(&mut Ui) -> R, ) -> ScrollAreaOutput<R>
Show the ScrollArea, and add the contents to the viewport.
If the inner area can be very long, consider using Self::show_rows instead.
Sourcepub fn show_rows<R>(
self,
ui: &mut Ui,
row_height_sans_spacing: f32,
total_rows: usize,
add_contents: impl FnOnce(&mut Ui, Range<usize>) -> R,
) -> ScrollAreaOutput<R>
pub fn show_rows<R>( self, ui: &mut Ui, row_height_sans_spacing: f32, total_rows: usize, add_contents: impl FnOnce(&mut Ui, Range<usize>) -> R, ) -> ScrollAreaOutput<R>
Efficiently show only the visible part of a large number of rows.
let text_style = egui::TextStyle::Body;
let row_height = ui.text_style_height(&text_style);
// let row_height = ui.spacing().interact_size.y; // if you are adding buttons instead of labels.
let total_rows = 10_000;
egui::ScrollArea::vertical().show_rows(ui, row_height, total_rows, |ui, row_range| {
for row in row_range {
let text = format!("Row {}/{}", row + 1, total_rows);
ui.label(text);
}
});Sourcepub fn show_viewport<R>(
self,
ui: &mut Ui,
add_contents: impl FnOnce(&mut Ui, Rect) -> R,
) -> ScrollAreaOutput<R>
pub fn show_viewport<R>( self, ui: &mut Ui, add_contents: impl FnOnce(&mut Ui, Rect) -> R, ) -> ScrollAreaOutput<R>
This can be used to only paint the visible part of the contents.
add_contents is given the viewport rectangle, which is the relative view of the content.
So if the passed rect has min = zero, then show the top left content (the user has not scrolled).
Trait Implementations§
Source§impl Clone for ScrollArea
impl Clone for ScrollArea
Source§fn clone(&self) -> ScrollArea
fn clone(&self) -> ScrollArea
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ScrollArea
impl RefUnwindSafe for ScrollArea
impl Send for ScrollArea
impl Sync for ScrollArea
impl Unpin for ScrollArea
impl UnwindSafe for ScrollArea
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> Downcast for T
impl<T> Downcast for T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more