pub enum SplitNode {
Leaf {
buffer_id: BufferId,
split_id: LeafId,
},
Split {
direction: SplitDirection,
first: Box<Self>,
second: Box<Self>,
ratio: f32,
split_id: ContainerId,
fixed_first: Option<u16>,
fixed_second: Option<u16>,
},
Grouped {
split_id: LeafId,
name: String,
layout: Box<Self>,
active_inner_leaf: LeafId,
},
}Expand description
A node in the split tree
Variants§
Leaf
Leaf node: displays a single buffer
Split
Internal node: contains two child splits
Fields
direction: SplitDirectionDirection of the split
ratio: f32Size ratio (0.0 to 1.0) - how much space the first child gets 0.5 = equal split, 0.3 = first gets 30%, etc.
split_id: ContainerIdUnique ID for this split container
Grouped
A grouped subtree that appears as a single tab entry in its parent split’s tab bar. When that tab is active, the subtree is expanded and rendered inside the parent split’s content area. When inactive, the node is skipped during rect computation.
Implementations§
Source§impl SplitNode
impl SplitNode
Sourcepub fn split(
direction: SplitDirection,
first: SplitNode,
second: SplitNode,
ratio: f32,
split_id: SplitId,
) -> Self
pub fn split( direction: SplitDirection, first: SplitNode, second: SplitNode, ratio: f32, split_id: SplitId, ) -> Self
Create a new split node with two children
Sourcepub fn find_mut(&mut self, target_id: SplitId) -> Option<&mut Self>
pub fn find_mut(&mut self, target_id: SplitId) -> Option<&mut Self>
Find a split by ID (returns mutable reference).
Grouped nodes are found by their split_id, and their inner
layout is searched as well.
Sourcepub fn find(&self, target_id: SplitId) -> Option<&Self>
pub fn find(&self, target_id: SplitId) -> Option<&Self>
Find a split by ID (returns immutable reference).
Grouped nodes are found by their split_id, and their inner
layout is searched as well.
Sourcepub fn parent_container_of(&self, target_id: SplitId) -> Option<ContainerId>
pub fn parent_container_of(&self, target_id: SplitId) -> Option<ContainerId>
Find the parent container of a given split node. For a node inside a Grouped subtree, returns the container within the subtree (not the Grouped node itself).
Sourcepub fn grouped_ancestor_of(&self, target_id: SplitId) -> Option<LeafId>
pub fn grouped_ancestor_of(&self, target_id: SplitId) -> Option<LeafId>
Find the Grouped ancestor node that contains a given target id (by walking
into Grouped subtrees). Returns the Grouped node’s own split_id if found.
Sourcepub fn find_grouped(&self, target: LeafId) -> Option<&Self>
pub fn find_grouped(&self, target: LeafId) -> Option<&Self>
Find the Grouped node whose split_id matches target. Returns
a reference to the Grouped node (or None).
Sourcepub fn get_leaves_with_rects(&self, rect: Rect) -> Vec<(LeafId, BufferId, Rect)>
pub fn get_leaves_with_rects(&self, rect: Rect) -> Vec<(LeafId, BufferId, Rect)>
Get all leaf nodes (buffer views) with their rectangles.
Grouped nodes always recurse into their inner layout — the layout’s leaves get the full rect that would have been given to the Grouped node. Visibility (which group is “active”) is applied elsewhere.
Sourcepub fn get_visible_leaves_with_rects<F>(
&self,
rect: Rect,
is_group_active: &F,
) -> Vec<(LeafId, BufferId, Rect)>
pub fn get_visible_leaves_with_rects<F>( &self, rect: Rect, is_group_active: &F, ) -> Vec<(LeafId, BufferId, Rect)>
Walk the tree using an “active group” predicate. For each Grouped node
encountered, the predicate is called with the Grouped node’s split_id;
if it returns true, the node’s layout is recursed into (with the
Grouped node’s rect). If false, the Grouped node and its subtree are
skipped entirely (not rendered).
Sourcepub fn get_separators(&self, rect: Rect) -> Vec<(SplitDirection, u16, u16, u16)>
pub fn get_separators(&self, rect: Rect) -> Vec<(SplitDirection, u16, u16, u16)>
Get all split separator lines (for rendering borders) Returns (direction, x, y, length) tuples
Sourcepub fn get_separators_with_ids(
&self,
rect: Rect,
) -> Vec<(ContainerId, SplitDirection, u16, u16, u16)>
pub fn get_separators_with_ids( &self, rect: Rect, ) -> Vec<(ContainerId, SplitDirection, u16, u16, u16)>
Get all split separator lines with their split IDs (for mouse hit testing) Returns (split_id, direction, x, y, length) tuples
Sourcepub fn all_split_ids(&self) -> Vec<SplitId>
pub fn all_split_ids(&self) -> Vec<SplitId>
Collect all split IDs in the tree
Sourcepub fn leaf_split_ids(&self) -> Vec<LeafId>
pub fn leaf_split_ids(&self) -> Vec<LeafId>
Collect only leaf split IDs (visible buffer splits, not container nodes). For Grouped nodes, returns the inner layout’s leaves.
Sourcepub fn count_leaves(&self) -> usize
pub fn count_leaves(&self) -> usize
Count the number of leaf nodes (visible buffers). Grouped subtrees count their inner leaves.
Sourcepub fn collect_group_names(&self) -> HashMap<LeafId, String>
pub fn collect_group_names(&self) -> HashMap<LeafId, String>
Collect display names for all Grouped nodes in the tree, keyed by
their LeafId (which is what TabTarget::Group points to).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for SplitNode
impl<'de> Deserialize<'de> for SplitNode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for SplitNode
Auto Trait Implementations§
impl Freeze for SplitNode
impl RefUnwindSafe for SplitNode
impl Send for SplitNode
impl Sync for SplitNode
impl Unpin for SplitNode
impl UnsafeUnpin for SplitNode
impl UnwindSafe for SplitNode
Blanket Implementations§
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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> 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<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more