Skip to main content

WindowHandle

Struct WindowHandle 

Source
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>

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn entity<C>(&self, cx: &C) -> Result<Entity<V>>
where C: AppContext,

Returns the root view as an Entity, which you can clone and keep.

§Errors

Fails if the window is closed or if the root view’s type no longer matches V.

Source

pub fn is_active(&self, cx: &mut App) -> Option<bool>

Returns whether the window is active, or None if it is closed or currently borrowed.

See Window::is_window_active for what counts as active.

Methods from Deref<Target = AnyWindowHandle>§

Source

pub fn build_entity<V: Render + 'static>( &self, cx: &mut TestAppContext, build_view: impl FnOnce(&mut Window, &mut Context<'_, V>) -> V, ) -> Entity<V>

Creates an entity with build_view in this window.

§Panics

Panics if the window has been closed.

Source

pub fn window_id(&self) -> WindowId

Returns the WindowId of this window.

Source

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.

Source

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.

Source

pub fn update<C, R>( self, cx: &mut C, update: impl FnOnce(AnyView, &mut Window, &mut App) -> R, ) -> Result<R>
where C: AppContext,

Updates the state of the root view of this window.

This will fail if the window has been closed.

Source

pub fn read<T, C, R>( self, cx: &C, read: impl FnOnce(Entity<T>, &App) -> R, ) -> Result<R>
where C: AppContext, T: 'static,

Read the state of the root view of this window.

This will fail if the window has been closed.

Trait Implementations§

Source§

impl<V> Clone for WindowHandle<V>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<V> Copy for WindowHandle<V>

Source§

impl<V> Debug for WindowHandle<V>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<V> Deref for WindowHandle<V>

Source§

type Target = AnyWindowHandle

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<V> DerefMut for WindowHandle<V>

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<V> Eq for WindowHandle<V>

Source§

impl<V: 'static> From<WindowHandle<V>> for AnyWindowHandle

Source§

fn from(val: WindowHandle<V>) -> Self

Converts to this type from the input type.
Source§

impl<V> Hash for WindowHandle<V>

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<V> PartialEq for WindowHandle<V>

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more

Auto Trait Implementations§

§

impl<V> Freeze for WindowHandle<V>
where PhantomData<fn(V) -> V>: Freeze,

§

impl<V> RefUnwindSafe for WindowHandle<V>
where PhantomData<fn(V) -> V>: RefUnwindSafe,

§

impl<V> Send for WindowHandle<V>
where PhantomData<fn(V) -> V>: Send,

§

impl<V> Sync for WindowHandle<V>
where PhantomData<fn(V) -> V>: Sync,

§

impl<V> Unpin for WindowHandle<V>
where PhantomData<fn(V) -> V>: Unpin,

§

impl<V> UnsafeUnpin for WindowHandle<V>
where PhantomData<fn(V) -> V>: UnsafeUnpin,

§

impl<V> UnwindSafe for WindowHandle<V>
where PhantomData<fn(V) -> V>: UnwindSafe,

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where 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) -> D
where M: TransformMatrix<T>,

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T, C> AdaptIntoUnclamped<T> for C
where T: AdaptFromUnclamped<C>,

Source§

type Scalar = <T as AdaptFromUnclamped<C>>::Scalar

The number type that’s used as the color’s components.
Source§

fn adapt_into_unclamped_with<M>(self) -> T

Adapt a color of type Self into a color of type T, using the custom matrix M. Read more
Source§

fn adapt_into_unclamped(self) -> T
where Bradford: LmsToXyz<Self::Scalar> + XyzToLms<Self::Scalar>,

Adapt a color of type Self into a color of type T, using the Bradford matrix. Read more
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T, C> ComponentsInto<C> for T

Source§

fn components_into(self) -> C

Cast this collection of color components into a collection of colors. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more