pub struct FocusContext { /* private fields */ }Expand description
Per-surface focus state. The runner activates each surface’s FocusContext around its
build/event/frame, so focus never crosses windows.
Implementations§
Source§impl FocusContext
impl FocusContext
Sourcepub fn enter(&self) -> FocusGuard
pub fn enter(&self) -> FocusGuard
Makes this instance the live one until the returned guard drops, which restores the previously-active instance. Nest by keeping guards in scope; they restore in reverse order.
Sourcepub fn enter_ambient() -> FocusGuard
pub fn enter_ambient() -> FocusGuard
Makes the ambient instance — the one that exists before any surface is built, and the only world a single-surface app ever has — live until the returned guard drops.
What the reactive flush needs for an effect owned by SurfaceHandle::NONE:
it was registered outside any surface, so its world is this one, and running it against
whichever surface happened to be entered when the signal fired would resolve its layout,
overlays and focus in somebody else’s. Reachable as soon as one app has both — a window tree
that never built a surface and a second tree that did.