pub struct PanelRegistry { /* private fields */ }Expand description
Everything gpui_base::dock exports, so a consumer never has to depend
on the foundation crate directly to write a skin or read a container’s
state. Kept in step with base’s own list by
every_base_dock_export_is_reachable_from_here.
Two names are handled elsewhere and one is deliberately absent:
base’s Panel and PanelView arrive as BasePanel and BasePanelView
because this module’s Panel/PanelView are the presentation halves that
extend them, and base’s Dock — a plain state struct holding one dock’s
open, collapsible, size and resizing flags — is not re-exported at all,
because the name meant a panel container in every released version of this
crate and handing it back with a different meaning is worse than dropping
it. A skin reads a dock through DockContext.
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() -> PanelRegistry
pub fn global(cx: &App) -> &PanelRegistry
pub fn global_mut(cx: &mut App) -> &mut PanelRegistry
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
Source§fn default() -> PanelRegistry
fn default() -> 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().