Skip to main content

PaneNode

Enum PaneNode 

Source
pub enum PaneNode {
    Leaf(Box<Pane>),
    Split {
        direction: SplitDirection,
        ratio: f32,
        first: Box<PaneNode>,
        second: Box<PaneNode>,
    },
}
Expand description

Tree node for pane layout

The pane tree is a binary tree where:

  • Leaf nodes contain actual terminal panes
  • Split nodes contain two children with a split direction and ratio

Variants§

§

Leaf(Box<Pane>)

A leaf node containing a terminal pane

§

Split

A split containing two child nodes

Fields

§direction: SplitDirection

Direction of the split

§ratio: f32

Split ratio (0.0 to 1.0) - position of divider For horizontal: ratio is height of first child / total height For vertical: ratio is width of first child / total width

§first: Box<PaneNode>

First child (top for horizontal, left for vertical)

§second: Box<PaneNode>

Second child (bottom for horizontal, right for vertical)

Implementations§

Source§

impl PaneNode

Source

pub fn leaf(pane: Pane) -> Self

Create a new leaf node with a pane

Source

pub fn split( direction: SplitDirection, ratio: f32, first: PaneNode, second: PaneNode, ) -> Self

Create a new split node

Source

pub fn is_leaf(&self) -> bool

Check if this is a leaf node

Source

pub fn as_pane(&self) -> Option<&Pane>

Get the pane if this is a leaf node

Source

pub fn as_pane_mut(&mut self) -> Option<&mut Pane>

Get mutable pane if this is a leaf node

Source

pub fn find_pane(&self, id: PaneId) -> Option<&Pane>

Find a pane by ID (recursive)

Source

pub fn find_pane_mut(&mut self, id: PaneId) -> Option<&mut Pane>

Find a mutable pane by ID (recursive)

Source

pub fn find_pane_at(&self, x: f32, y: f32) -> Option<&Pane>

Find the pane at a given pixel position

Source

pub fn all_pane_ids(&self) -> Vec<PaneId>

Get all pane IDs in this subtree

Source

pub fn all_panes(&self) -> Vec<&Pane>

Get all panes in this subtree

Source

pub fn all_panes_mut(&mut self) -> Vec<&mut Pane>

Get all mutable panes in this subtree

Source

pub fn pane_count(&self) -> usize

Count total number of panes

Source

pub fn calculate_bounds(&mut self, bounds: PaneBounds, divider_width: f32)

Calculate bounds for all panes given the total available area

This recursively distributes space according to split ratios and updates each pane’s bounds field.

Source

pub fn find_pane_in_direction( &self, from_id: PaneId, direction: NavigationDirection, ) -> Option<PaneId>

Find the closest pane in a given direction from the focused pane

Returns the pane ID of the closest pane in the specified direction, or None if there is no pane in that direction.

Source

pub fn collect_dividers( &self, bounds: PaneBounds, divider_width: f32, ) -> Vec<DividerRect>

Collect all divider rectangles in the pane tree

Returns a list of DividerRect structures that can be used for:

  • Rendering divider lines between panes
  • Hit testing for mouse drag resize

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,