pub struct Pane { /* private fields */ }Expand description
A single pane holding an ordered list of tabs, exactly one of which is
active. Renders its own [TabBar]/[Tab] strip (with close “x” and add
“+” affordances) above the active tab’s content.
Create with cx.new(|_| Pane::new()), mount as a crate::PaneGroup
leaf.
Implementations§
Source§impl Pane
impl Pane
Sourcepub fn new() -> Self
pub fn new() -> Self
Starts with zero tabs. The “+” button uses [PlaceholderTab] until
Pane::with_new_tab_factory is called.
Sourcepub fn set_focused(&mut self, focused: bool, cx: &mut Context<'_, Self>)
pub fn set_focused(&mut self, focused: bool, cx: &mut Context<'_, Self>)
Sets whether this pane is its group’s active pane (drives whether its
active tab is shown as selected). Called by crate::PaneGroup.
Sourcepub fn with_new_tab_factory(
self,
factory: impl Fn() -> Box<dyn TabContent> + 'static,
) -> Self
pub fn with_new_tab_factory( self, factory: impl Fn() -> Box<dyn TabContent> + 'static, ) -> Self
Sets the factory used to create content for tabs opened via the “+”
button. Additive over the phase-01 design (not explicitly listed
there) — needed because Pane renders its own “+” button and must
therefore know how to produce new tab content itself.
Sourcepub fn with_tab(self, content: Box<dyn TabContent>) -> Self
pub fn with_tab(self, content: Box<dyn TabContent>) -> Self
Builder that seeds an initial tab without a Context — usable
inside a crate::PaneGroup pane factory (which runs before the
pane’s own context exists) or any cx.new(|_| Pane::new().with_tab(..))
construction. The seeded tab becomes active.
Sourcepub fn add_tab(
&mut self,
content: Box<dyn TabContent>,
cx: &mut Context<'_, Self>,
) -> TabId
pub fn add_tab( &mut self, content: Box<dyn TabContent>, cx: &mut Context<'_, Self>, ) -> TabId
Appends a tab and activates it. Returns the new tab’s stable id.
Sourcepub fn close_tab(&mut self, idx: usize, cx: &mut Context<'_, Self>) -> bool
pub fn close_tab(&mut self, idx: usize, cx: &mut Context<'_, Self>) -> bool
Removes the tab at idx, reassigning the active index if needed.
Returns true if the pane is now empty (in which case
PaneEvent::Empty is emitted for PaneGroup to remove this pane).
Sourcepub fn activate(&mut self, idx: usize, cx: &mut Context<'_, Self>)
pub fn activate(&mut self, idx: usize, cx: &mut Context<'_, Self>)
Activates the tab at idx (no-op if out of range).
Sourcepub fn close_all_tabs(&mut self, cx: &mut Context<'_, Self>)
pub fn close_all_tabs(&mut self, cx: &mut Context<'_, Self>)
Closes every tab (firing each one’s TabContent::on_close in order)
and empties the pane. Called by crate::PaneGroup when a whole pane
is removed from the tree, so PTY-owning tabs shut down deterministically
instead of relying on Entity/Box drop timing.
Sourcepub fn reorder(&mut self, from: usize, to: usize, cx: &mut Context<'_, Self>)
pub fn reorder(&mut self, from: usize, to: usize, cx: &mut Context<'_, Self>)
Moves the tab at from to to, preserving which tab is active.
Sourcepub fn active_index(&self) -> usize
pub fn active_index(&self) -> usize
Index of the active tab.
Sourcepub fn titles(&self) -> Vec<SharedString>
pub fn titles(&self) -> Vec<SharedString>
Titles of every open tab, in order — mainly useful for tests asserting reorder results.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Pane
impl !RefUnwindSafe for Pane
impl !Send for Pane
impl !Sync for Pane
impl !UnwindSafe for Pane
impl Unpin for Pane
impl UnsafeUnpin for Pane
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.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> 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
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().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