pub struct CallbackInfoRefData<'a> {
pub layout_window: &'a LayoutWindow,
pub renderer_resources: &'a RendererResources,
pub previous_window_state: &'a Option<FullWindowState>,
pub current_window_state: &'a FullWindowState,
pub gl_context: &'a OptionGlContextPtr,
pub current_scroll_manager: &'a BTreeMap<DomId, BTreeMap<NodeHierarchyItemId, ScrollPosition>>,
pub current_window_handle: &'a RawWindowHandle,
pub system_callbacks: &'a ExternalSystemCallbacks,
pub system_style: Arc<SystemStyle>,
pub ctx: OptionRefAny,
}Expand description
Information about the callback that is passed to the callback whenever a callback is invoked
§Architecture
CallbackInfo uses a transaction-based system:
- Read-only pointers: Access to layout data, window state, managers for queries
- Change vector: All modifications are recorded as CallbackChange items
- Processing: Changes are applied atomically after callback returns
This design provides clear separation between queries and modifications, makes debugging easier, and allows for future extensibility. Reference data container for CallbackInfo (all read-only fields)
This struct consolidates all readonly references that callbacks need to query window state. By grouping these into a single struct, we reduce the number of parameters to CallbackInfo::new() from 13 to 3, making the API more maintainable and easier to extend.
This is pure syntax sugar - the struct lives on the stack in the caller and is passed by reference.
Fields§
§layout_window: &'a LayoutWindowPointer to the LayoutWindow containing all layout results (READ-ONLY for queries)
renderer_resources: &'a RendererResourcesNecessary to query FontRefs from callbacks
previous_window_state: &'a Option<FullWindowState>Previous window state (for detecting changes)
current_window_state: &'a FullWindowStateState of the current window that the callback was called on (read only!)
gl_context: &'a OptionGlContextPtrAn Rc to the OpenGL context, in order to be able to render to OpenGL textures
current_scroll_manager: &'a BTreeMap<DomId, BTreeMap<NodeHierarchyItemId, ScrollPosition>>Immutable reference to where the nodes are currently scrolled (current position)
current_window_handle: &'a RawWindowHandleHandle of the current window
system_callbacks: &'a ExternalSystemCallbacksCallbacks for creating threads and getting the system time (since this crate uses no_std)
system_style: Arc<SystemStyle>Platform-specific system style (colors, spacing, etc.) Arc allows safe cloning in callbacks without unsafe pointer manipulation
ctx: OptionRefAnyThe callable for FFI language bindings (Python, etc.) Cloned from the Callback struct before invocation. Native Rust callbacks have this as None.
Auto Trait Implementations§
impl<'a> Freeze for CallbackInfoRefData<'a>
impl<'a> !RefUnwindSafe for CallbackInfoRefData<'a>
impl<'a> !Send for CallbackInfoRefData<'a>
impl<'a> !Sync for CallbackInfoRefData<'a>
impl<'a> Unpin for CallbackInfoRefData<'a>
impl<'a> !UnwindSafe for CallbackInfoRefData<'a>
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> 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