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 monitors: Arc<Mutex<MonitorVec>>,
pub ctx: OptionRefAny,
}Expand description
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
monitors: Arc<Mutex<MonitorVec>>Shared monitor list - initialized once at app start, updated by the platform
layer on monitor topology changes (e.g. WM_DISPLAYCHANGE, NSScreenParametersChanged).
Callbacks lock the mutex to read; platform locks to write.
ctx: OptionRefAnyThe callable for FFI language bindings (Python, etc.) Cloned from the Callback struct before invocation. Native Rust callbacks have this as None.
Trait Implementations§
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for CallbackInfoRefData<'a>
impl<'a> !Send for CallbackInfoRefData<'a>
impl<'a> !Sync for CallbackInfoRefData<'a>
impl<'a> !UnwindSafe for CallbackInfoRefData<'a>
impl<'a> Freeze for CallbackInfoRefData<'a>
impl<'a> Unpin for CallbackInfoRefData<'a>
impl<'a> UnsafeUnpin 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