pub struct PanelRegistry { /* private fields */ }Expand description
Global registry of panel builders, keyed by panel name, used to reconstruct
a panel view from persisted PanelState/PanelInfo data.
A builder returns an Arc<dyn PanelView>, not a bare
AnyView. An earlier revision of this module returned AnyView so that a
builder would not have to depend on the panel traits, on the reasoning
that “a caller that needs a richer handle downcasts or wraps the
AnyView itself”. DockArea::load is that
caller, and it cannot: downcasting needs the concrete type, which the
registry is precisely the mechanism for not knowing. Without a
PanelView a restored panel could not be asked for its
dump, so every registered panel’s own persisted
payload would be dropped on the first save after a load.
Building a panel that was never registered returns None rather than a
placeholder view: rendering an “invalid panel” placeholder is presentation
behavior that belongs above this seam, not inside gpui-base. DockArea
substitutes a draw-nothing placeholder that carries the original
PanelState forward, so an unknown panel survives a round trip.
Implementations§
Source§impl PanelRegistry
impl PanelRegistry
pub fn new() -> Self
pub fn global(cx: &App) -> &Self
pub fn global_mut(cx: &mut App) -> &mut Self
Sourcepub fn build_panel(
panel_name: &str,
context: PanelBuildContext<'_>,
window: &mut Window,
cx: &mut App,
) -> Option<Arc<dyn PanelView>>
pub fn build_panel( panel_name: &str, context: PanelBuildContext<'_>, window: &mut Window, cx: &mut App, ) -> Option<Arc<dyn PanelView>>
Build a panel by name.
Returns None if no builder is registered for panel_name.
Trait Implementations§
Source§impl Default for PanelRegistry
impl Default for PanelRegistry
impl Global for PanelRegistry
Auto Trait Implementations§
impl !RefUnwindSafe for PanelRegistry
impl !Send for PanelRegistry
impl !Sync for PanelRegistry
impl !UnwindSafe for PanelRegistry
impl Freeze for PanelRegistry
impl Unpin for PanelRegistry
impl UnsafeUnpin for PanelRegistry
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> 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<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> ReadGlobal for Twhere
T: Global,
impl<T> ReadGlobal for Twhere
T: Global,
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().