pub struct WindowHandle<V> { /* private fields */ }Expand description
A handle to an open window whose root view has type V.
Use it to read or update the window’s root view from outside the window, such as from
another window or from a task. Handles don’t keep the window open: if the window closes,
the methods return an error. Get one from App::open_window, or convert an
AnyWindowHandle with AnyWindowHandle::downcast. The handle derefs to
AnyWindowHandle, so window_id() is available too.
§Examples
struct Counter {
count: usize,
}
impl Render for Counter {
fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
div()
}
}
let handle = window.handle();
app.update(|cx| {
handle.update(cx, |counter, _, _| counter.count += 1).unwrap();
});
app.read(|cx| assert_eq!(handle.read(cx).unwrap().count, 1));Implementations§
Source§impl<V: 'static + Render> WindowHandle<V>
impl<V: 'static + Render> WindowHandle<V>
Sourcepub fn new(id: WindowId) -> Self
pub fn new(id: WindowId) -> Self
Creates a handle for the window with id, assuming its root view has type V.
This does not check the live root. Reads and updates fail if its type does not match V.
AnyWindowHandle::downcast checks the type recorded in that handle, which may be stale
after Window::replace_root.
Sourcepub fn root<C>(&self, cx: &mut C) -> Result<Entity<V>>where
C: AppContext,
pub fn root<C>(&self, cx: &mut C) -> Result<Entity<V>>where
C: AppContext,
Returns the window’s root view as an entity.
§Errors
Fails if the window is closed or if the root view’s type no longer matches V.
Sourcepub fn update<C, R>(
&self,
cx: &mut C,
update: impl FnOnce(&mut V, &mut Window, &mut Context<'_, V>) -> R,
) -> Result<R>where
C: AppContext,
pub fn update<C, R>(
&self,
cx: &mut C,
update: impl FnOnce(&mut V, &mut Window, &mut Context<'_, V>) -> R,
) -> Result<R>where
C: AppContext,
Updates the root view, and gives update the window and a context for the view.
Use it to change the view from outside the window. Calls to notify made in the update
redraw the window on the next frame.
§Errors
Fails if the window is closed or if the root view’s type no longer matches V.
Sourcepub fn read<'a>(&self, cx: &'a App) -> Result<&'a V>
pub fn read<'a>(&self, cx: &'a App) -> Result<&'a V>
Returns a reference to the root view for reading.
§Errors
Fails if the window is closed or if the root view’s type no longer matches V.
Sourcepub fn read_with<C, R>(
&self,
cx: &C,
read_with: impl FnOnce(&V, &App) -> R,
) -> Result<R>where
C: AppContext,
pub fn read_with<C, R>(
&self,
cx: &C,
read_with: impl FnOnce(&V, &App) -> R,
) -> Result<R>where
C: AppContext,
Passes the root view and the app to read_with and returns its result.
§Errors
Fails if the window is closed or if the root view’s type no longer matches V.
Methods from Deref<Target = AnyWindowHandle>§
Sourcepub fn build_entity<V: Render + 'static>(
&self,
cx: &mut TestAppContext,
build_view: impl FnOnce(&mut Window, &mut Context<'_, V>) -> V,
) -> Entity<V>
pub fn build_entity<V: Render + 'static>( &self, cx: &mut TestAppContext, build_view: impl FnOnce(&mut Window, &mut Context<'_, V>) -> V, ) -> Entity<V>
Sourcepub fn root_entity_type_name(&self) -> &'static str
pub fn root_entity_type_name(&self) -> &'static str
Returns the root type name recorded when this handle was created.
This uses std::any::type_name. Replacing the window’s root does not change the name
stored in an existing handle.
Sourcepub fn downcast<T: 'static>(&self) -> Option<WindowHandle<T>>
pub fn downcast<T: 'static>(&self) -> Option<WindowHandle<T>>
Converts this handle to WindowHandle<T> if its recorded root type is T.
This compares the stored type tag without querying the window. After
Window::replace_root, a successful downcast can still yield a handle whose reads and
updates fail. Use AnyWindowHandle::update to inspect the live root instead.
Trait Implementations§
Source§impl<V> Clone for WindowHandle<V>
impl<V> Clone for WindowHandle<V>
impl<V> Copy for WindowHandle<V>
Source§impl<V> Debug for WindowHandle<V>
impl<V> Debug for WindowHandle<V>
Source§impl<V> Deref for WindowHandle<V>
impl<V> Deref for WindowHandle<V>
Source§impl<V> DerefMut for WindowHandle<V>
impl<V> DerefMut for WindowHandle<V>
impl<V> Eq for WindowHandle<V>
Source§impl<V: 'static> From<WindowHandle<V>> for AnyWindowHandle
impl<V: 'static> From<WindowHandle<V>> for AnyWindowHandle
Source§fn from(val: WindowHandle<V>) -> Self
fn from(val: WindowHandle<V>) -> Self
Source§impl<V> Hash for WindowHandle<V>
impl<V> Hash for WindowHandle<V>
Auto Trait Implementations§
impl<V> Freeze for WindowHandle<V>
impl<V> RefUnwindSafe for WindowHandle<V>
impl<V> Send for WindowHandle<V>
impl<V> Sync for WindowHandle<V>
impl<V> Unpin for WindowHandle<V>
impl<V> UnsafeUnpin for WindowHandle<V>
impl<V> UnwindSafe for WindowHandle<V>
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
Source§type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
Source§fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.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,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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 moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more