pub struct VirtualViewManager { /* private fields */ }Expand description
Manages VirtualView lifecycle, including re-invocation
Tracks which VirtualViews have been invoked, assigns unique DOM IDs to nested
virtual views, and determines when VirtualViews need to be re-invoked (e.g., when
the container bounds expand or the user scrolls near an edge).
Implementations§
Source§impl VirtualViewManager
impl VirtualViewManager
Sourcepub fn debug_counts(&self) -> usize
pub fn debug_counts(&self) -> usize
Number of tracked VirtualView states. Used by AZ_E2E_TEST to watch growth.
Sourcepub fn set_reason_override(
&mut self,
dom_id: DomId,
node_id: NodeId,
reason: VirtualViewCallbackReason,
)
pub fn set_reason_override( &mut self, dom_id: DomId, node_id: NodeId, reason: VirtualViewCallbackReason, )
MWA-C-virtual_view: stage the reason the next invoke of this view
should deliver to the user callback (consumed by check_reinvoke).
Sourcepub fn get_or_create_nested_dom_id(
&mut self,
dom_id: DomId,
node_id: NodeId,
) -> DomId
pub fn get_or_create_nested_dom_id( &mut self, dom_id: DomId, node_id: NodeId, ) -> DomId
Gets or creates a unique nested DOM ID for a VirtualView
Returns the existing DOM ID if the VirtualView was previously registered,
otherwise allocates a new unique ID and initializes the VirtualView state.
Sourcepub fn get_nested_dom_id(&self, dom_id: DomId, node_id: NodeId) -> Option<DomId>
pub fn get_nested_dom_id(&self, dom_id: DomId, node_id: NodeId) -> Option<DomId>
Gets the nested DOM ID for a VirtualView if it exists
Sourcepub fn was_virtual_view_invoked(&self, dom_id: DomId, node_id: NodeId) -> bool
pub fn was_virtual_view_invoked(&self, dom_id: DomId, node_id: NodeId) -> bool
Returns whether the VirtualView has ever been invoked
Sourcepub fn update_virtual_view_info(
&mut self,
dom_id: DomId,
node_id: NodeId,
scroll_size: LogicalSize,
virtual_scroll_size: LogicalSize,
) -> Option<()>
pub fn update_virtual_view_info( &mut self, dom_id: DomId, node_id: NodeId, scroll_size: LogicalSize, virtual_scroll_size: LogicalSize, ) -> Option<()>
Updates the VirtualView’s content size information
Called after the VirtualView callback returns to record the actual content
dimensions. If the new size is larger than previously recorded, clears
the expansion flag to allow BoundsExpanded re-invocation.
Sourcepub fn mark_invoked(
&mut self,
dom_id: DomId,
node_id: NodeId,
reason: VirtualViewCallbackReason,
) -> Option<()>
pub fn mark_invoked( &mut self, dom_id: DomId, node_id: NodeId, reason: VirtualViewCallbackReason, ) -> Option<()>
Marks a VirtualView as invoked for a specific reason
Updates internal state flags based on the callback reason to prevent duplicate callbacks for the same trigger condition.
Sourcepub fn reset_all_invocation_flags(&mut self)
pub fn reset_all_invocation_flags(&mut self)
Reset invocation flags for ALL tracked VirtualViews
After layout_results.clear(), the child DOMs no longer exist in memory.
This method ensures check_reinvoke() returns InitialRender for every
VirtualView, so the callbacks re-run and re-populate layout_results.
Called from layout_and_generate_display_list() after clearing layout results.
Sourcepub fn force_reinvoke(&mut self, dom_id: DomId, node_id: NodeId) -> Option<()>
pub fn force_reinvoke(&mut self, dom_id: DomId, node_id: NodeId) -> Option<()>
Force a VirtualView to be re-invoked on the next layout pass
Clears all invocation flags, causing check_reinvoke() to return InitialRender.
Used by trigger_virtual_view_rerender() to manually refresh VirtualView content.
Sourcepub fn all_view_keys(&self) -> Vec<(DomId, NodeId)>
pub fn all_view_keys(&self) -> Vec<(DomId, NodeId)>
(DomId, NodeId) of every VirtualView registered so far (invoked at
least once). Used to re-invoke all views after a shared-dataset change
arrives out-of-band (e.g. a background tile-fetch writeback) without
needing to know which node the data belongs to.
Sourcepub fn check_reinvoke(
&mut self,
dom_id: DomId,
node_id: NodeId,
scroll_manager: &ScrollManager,
layout_bounds: LogicalRect,
) -> Option<VirtualViewCallbackReason>
pub fn check_reinvoke( &mut self, dom_id: DomId, node_id: NodeId, scroll_manager: &ScrollManager, layout_bounds: LogicalRect, ) -> Option<VirtualViewCallbackReason>
Checks whether a VirtualView needs to be re-invoked and returns the reason
Returns Some(reason) if the VirtualView callback should be invoked:
InitialRender:VirtualViewhas never been invokedBoundsExpanded: Container grew larger than contentEdgeScrolled: User scrolled near an edge (for lazy loading)
Returns None if no re-invocation is needed.
Sourcepub fn get_all_virtual_view_infos(&self) -> Vec<VirtualViewDebugInfo>
pub fn get_all_virtual_view_infos(&self) -> Vec<VirtualViewDebugInfo>
Returns debug info for all tracked VirtualViews
Each entry contains: (parent_dom_id, parent_node_id, nested_dom_id,
scroll_size, virtual_scroll_size, was_invoked, last_bounds)
Trait Implementations§
Source§impl Clone for VirtualViewManager
impl Clone for VirtualViewManager
Source§fn clone(&self) -> VirtualViewManager
fn clone(&self) -> VirtualViewManager
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 VirtualViewManager
impl Debug for VirtualViewManager
Source§impl Default for VirtualViewManager
impl Default for VirtualViewManager
Source§fn default() -> VirtualViewManager
fn default() -> VirtualViewManager
Source§impl NodeIdRemap for VirtualViewManager
impl NodeIdRemap for VirtualViewManager
Source§fn remap_node_ids(&mut self, dom: DomId, map: &NodeIdMap)
fn remap_node_ids(&mut self, dom: DomId, map: &NodeIdMap)
Remap the (DomId, NodeId) keys of every tracked VirtualView.
A VirtualView whose host node was unmounted has its state dropped —
including the nested_dom_id binding, which would otherwise resurface
on whatever node inherited the index (rendering the wrong nested DOM
into it) and leak forever.
Auto Trait Implementations§
impl Freeze for VirtualViewManager
impl RefUnwindSafe for VirtualViewManager
impl Send for VirtualViewManager
impl Sync for VirtualViewManager
impl Unpin for VirtualViewManager
impl UnsafeUnpin for VirtualViewManager
impl UnwindSafe for VirtualViewManager
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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