pub struct SplitState {Show 13 fields
pub area: Rect,
pub inner: Rect,
pub widget_areas: Vec<Rect>,
pub splitline_areas: Vec<Rect>,
pub splitline_mark_position: Vec<Position>,
pub mark_offset: u16,
pub direction: Direction,
pub split_type: SplitType,
pub resize: SplitResize,
pub focus: FocusFlag,
pub focus_marker: Option<usize>,
pub mouse: MouseFlagsN,
pub non_exhaustive: NonExhaustive,
/* private fields */
}Expand description
State & event handling.
Fields§
§area: RectTotal area. readonly. renewed for each render.
inner: RectArea inside the border. readonly. renewed for each render.
widget_areas: Vec<Rect>The widget areas. Use this after calling layout() to render your widgets. readonly renewed for each render.
splitline_areas: Vec<Rect>Area used by the splitter. This is area is used for moving the splitter. It might overlap with the widget area. readonly renewed for each render.
splitline_mark_position: Vec<Position>Start position for drawing the mark. readonly renewed for each render.
mark_offset: u16Offset of the mark from top/left. readonly renewed for each render.
direction: DirectionDirection of the split. readonly renewed for each render.
split_type: SplitTypereadonly renewed for each render.
resize: SplitResizereadonly renewed for each render.
focus: FocusFlagFocus. read+write
focus_marker: Option<usize>If the splitter has the focus you can navigate between the split-markers. This is the currently active split-marker. read+write
mouse: MouseFlagsNMouseflags. read+write
non_exhaustive: NonExhaustiveImplementations§
Source§impl SplitState
impl SplitState
Sourcepub fn set_screen_split_pos(&mut self, n: usize, pos: (u16, u16)) -> bool
pub fn set_screen_split_pos(&mut self, n: usize, pos: (u16, u16)) -> bool
Set the position for the nth splitter.
The position is limited the combined area of the two adjacent areas. The position is further limited to leave space for rendering the splitter.
Sourcepub fn move_split_left(&mut self, n: usize, delta: u16) -> bool
pub fn move_split_left(&mut self, n: usize, delta: u16) -> bool
Move the nth split position. If delta is greater than the area length it sets the length to 0.
Sourcepub fn move_split_right(&mut self, n: usize, delta: u16) -> bool
pub fn move_split_right(&mut self, n: usize, delta: u16) -> bool
Move the nth split position. Does nothing if the change is bigger than the length of the split.
Sourcepub fn move_split_up(&mut self, n: usize, delta: u16) -> bool
pub fn move_split_up(&mut self, n: usize, delta: u16) -> bool
Move the nth split position. Does nothing if the change is bigger than the length of the split.
Sourcepub fn move_split_down(&mut self, n: usize, delta: u16) -> bool
pub fn move_split_down(&mut self, n: usize, delta: u16) -> bool
Move the nth split position. Does nothing if the change is bigger than the length of the split.
Sourcepub fn select_next_split(&mut self) -> bool
pub fn select_next_split(&mut self) -> bool
Select the next splitter for manual adjustment.
Sourcepub fn select_prev_split(&mut self) -> bool
pub fn select_prev_split(&mut self) -> bool
Select the previous splitter for manual adjustment.
Sourcepub fn area_lengths(&self) -> &[u16]
pub fn area_lengths(&self) -> &[u16]
Get all area lengths.
Sourcepub fn set_area_lengths(&mut self, lengths: Vec<u16>)
pub fn set_area_lengths(&mut self, lengths: Vec<u16>)
Set all area lengths.
This will adjust the list of the hidden splits too.
Caution If the sum of the lengths doesn’t match the display-width this will trigger a layout and will use the given lenghts as Constraint::Fill().
Caution
If a length is 0 it will not display the split at all.
Get the value of the hidden lengths.
Set the value of the hidden lengths.
This will take at most area_length.len() items of this Vec. And it will fill missing items as 0.
Sourcepub fn area_len(&self, n: usize) -> u16
pub fn area_len(&self, n: usize) -> u16
Length of the nth split.
Caution
This length includes the width of the split itself.
Which may or may not take some space. Except for the last.
So it will be better to use widget_areas for anything
rendering related.
Sourcepub fn total_area_len(&self) -> u16
pub fn total_area_len(&self) -> u16
Sum of all area lengths.
Sourcepub fn set_area_len(&mut self, n: usize, len: u16)
pub fn set_area_len(&mut self, n: usize, len: u16)
Set the length of the nth split.
This resets any hidden state of the nth split.
Caution The sum of all lengths must be equal with the width/height of the splitter. If it is not this operation doesn’t set the absolute width of the nth split. Instead, it triggers a layout of the widget, takes all the lengths as Constraint::Fill() values and redistributes the size.
You can either ensure to change some other len to accommodate for your changes. Or use set_split_pos or set_screen_split_pos
Caution
This length includes the width of the split itself. Which may or may not take some space. Except for the last area. Which doesn’t have a split.
So:
- If you set the length to 0 the area will be hidden completely and no split will be shown.
- A value of 1 is fine.
- The last area can have a length 0 and that’s fine too.
Caution
Before the first render this will do nothing. Use set_area_lengths to initialize the areas.
Sourcepub fn split_pos(&self, n: usize) -> u16
pub fn split_pos(&self, n: usize) -> u16
Returns the position of the nth split.
Caution
The numbering for the splitters goes from 0 to len-1 exclusive.
Split n marks the gap between area n and n+1.
Caution
This returns the position of the gap between two adjacent
split-areas. Use splitline_areas for anything rendering related.
Sourcepub fn set_split_pos(&mut self, n: usize, pos: u16)
pub fn set_split_pos(&mut self, n: usize, pos: u16)
Sets the position of the nth split.
Depending on the resize strategy this can limit the allowed positions for the split.
Caution
The numbering for the splitters goes from 0 to len-1 exclusive.
Split n marks the gap between area n and n+1.
Caution
This marks the position of the gap between two adjacent split-areas. If you start from screen-coordinates it might be easier to use set_screen_split_pos
Is the split hidden?
Sourcepub fn hide_split(&mut self, n: usize) -> bool
pub fn hide_split(&mut self, n: usize) -> bool
Hide the split and adds its area to the following split. If there is no following split it will go left/up. Leaves enough space to render the splitter.
Sourcepub fn show_split(&mut self, n: usize) -> bool
pub fn show_split(&mut self, n: usize) -> bool
Show a hidden split. It will first try to reduce the areas to the right, and then the areas to the left to make space.
Trait Implementations§
Source§impl Clone for SplitState
impl Clone for SplitState
Source§impl Debug for SplitState
impl Debug for SplitState
Source§impl Default for SplitState
impl Default for SplitState
Source§impl HandleEvent<Event, MouseOnly, Outcome> for SplitState
impl HandleEvent<Event, MouseOnly, Outcome> for SplitState
Source§impl HandleEvent<Event, Regular, Outcome> for SplitState
impl HandleEvent<Event, Regular, Outcome> for SplitState
Source§impl HasFocus for SplitState
impl HasFocus for SplitState
Source§fn build(&self, builder: &mut FocusBuilder)
fn build(&self, builder: &mut FocusBuilder)
Source§fn is_focused(&self) -> bool
fn is_focused(&self) -> bool
Source§fn lost_focus(&self) -> bool
fn lost_focus(&self) -> bool
Source§fn gained_focus(&self) -> bool
fn gained_focus(&self) -> bool
Source§impl RelocatableState for SplitState
impl RelocatableState for SplitState
Source§fn relocate(&mut self, shift: (i16, i16), clip: Rect)
fn relocate(&mut self, shift: (i16, i16), clip: Rect)
Source§fn relocate_popup(&mut self, shift: (i16, i16), clip: Rect)
fn relocate_popup(&mut self, shift: (i16, i16), clip: Rect)
Auto Trait Implementations§
impl !Freeze for SplitState
impl !RefUnwindSafe for SplitState
impl !Send for SplitState
impl !Sync for SplitState
impl Unpin for SplitState
impl !UnwindSafe for SplitState
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> 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, 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, 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