pub struct PopupRenderState {
pub buffer_id: Option<BufferId>,
pub scroll: u32,
pub placement: PopupPlacement,
pub anchor: Option<Position>,
pub doc_scroll_at_anchor: u32,
}Expand description
Help / hover / signature popup’s render-side projection.
Phase 5.8.AF.5 / Slice 3c.final.B (group 3): populated.
buffer_id mirrors Editor::popup_buffer (the active popup’s
id, None when no popup is open). placement echoes
Editor::popup_placement. Help content + syntax / link styling
are carried by the registry Document at buffer_id and its live
cells-worker DisplayMatrix (grammar spans + the ExtraHighlights
link overlay) — both renderers source the popup’s CONTENT, TITLE,
and line-count from the registry Document directly (PU.2 / PU.1b-4b),
so no popup-side HelpBuffer snapshot is published.
Fields§
§buffer_id: Option<BufferId>§scroll: u32PU.1b-4b: the popup’s State-A view scroll (= Editor::popup_scroll).
Genuine popup-only view state — NOT in the registry Document (the
Document carries no per-popup scroll), so it is published here for
both renderers’ State-A (popup-shown-but-not-focused) anchor. State
B (focused) reads the live active_document.scroll instead.
placement: PopupPlacement§anchor: Option<Position>2026-05-22 popup-anchor: cursor position snapshotted at popup-open time. CursorAnchored renderers read this so the popup stays pinned to the symbol it was invoked from instead of re-deriving from the active cursor every frame (which made the popup follow motions). Both TUI and GPUI peers consume the same field from the published RS.
doc_scroll_at_anchor: u32Document scroll at popup-open time. Used by CursorAnchored
renderers to convert anchor.line (document coordinates)
into a screen row without being confused by State B, where
active_document.scroll reflects the POPUP’s scroll
rather than the document’s. Fixed once at open; survives
the State A → B transition.
Implementations§
Trait Implementations§
Source§impl Clone for PopupRenderState
impl Clone for PopupRenderState
Source§fn clone(&self) -> PopupRenderState
fn clone(&self) -> PopupRenderState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PopupRenderState
impl Debug for PopupRenderState
Source§impl Default for PopupRenderState
impl Default for PopupRenderState
Source§fn default() -> PopupRenderState
fn default() -> PopupRenderState
Auto Trait Implementations§
impl Freeze for PopupRenderState
impl RefUnwindSafe for PopupRenderState
impl Send for PopupRenderState
impl Sync for PopupRenderState
impl Unpin for PopupRenderState
impl UnsafeUnpin for PopupRenderState
impl UnwindSafe for PopupRenderState
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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.§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.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 more