pub struct FocusHandle {
pub tab_index: isize,
pub tab_stop: bool,
/* private fields */
}Expand description
A handle that makes an element focusable and tracks whether it has focus.
Create one with App::focus_handle in the view that owns the element,
store it in the view, and attach it to the element with
InteractiveElement::track_focus. While a clone of the handle is alive, the
window keeps the element’s focus id.
Use Window::focus to move focus to a handle and Window::focused to
find the handle that has focus. FocusHandle::downgrade returns a
WeakFocusHandle, which doesn’t keep the focus id alive.
§Examples
let focus_handle = cx.focus_handle();
window.focus(&focus_handle, cx);
Field { focus_handle }
window.update(|field, window, _cx| assert!(field.focus_handle.is_focused(window)));See the focus guide and input dispatch.
Fields§
§tab_index: isizeThe index of this element in the tab order.
tab_stop: boolWhether this element can be focused by tab navigation.
Implementations§
Source§impl FocusHandle
impl FocusHandle
Sourcepub fn tab_index(self, index: isize) -> Self
pub fn tab_index(self, index: isize) -> Self
Sets the index that orders this handle among tab stops.
The index is stored in the window’s focus map, so it applies to every
clone of this handle. It affects only the order used by Window::focus_next
and Window::focus_prev.
§Examples
let handle = cx.focus_handle().tab_index(2).tab_stop(true);
assert_eq!(handle.tab_index, 2);
assert!(handle.tab_stop);Sourcepub fn tab_stop(self, tab_stop: bool) -> Self
pub fn tab_stop(self, tab_stop: bool) -> Self
Sets whether this handle is a tab stop.
When false, Window::focus_next and Window::focus_prev skip this element.
Programmatic focus with Window::focus still works.
Sourcepub fn downgrade(&self) -> WeakFocusHandle
pub fn downgrade(&self) -> WeakFocusHandle
Returns a WeakFocusHandle that doesn’t keep the focus id alive.
Sourcepub fn focus(&self, window: &mut Window, cx: &mut App)
pub fn focus(&self, window: &mut Window, cx: &mut App)
Moves focus to this handle’s element. Same as Window::focus.
Sourcepub fn is_focused(&self, window: &Window) -> bool
pub fn is_focused(&self, window: &Window) -> bool
Returns whether this handle’s element has focus.
Sourcepub fn contains_focused(&self, window: &Window, cx: &App) -> bool
pub fn contains_focused(&self, window: &Window, cx: &App) -> bool
Returns whether the focused element is this element or one of its descendants.
Sourcepub fn within_focused(&self, window: &Window, cx: &mut App) -> bool
pub fn within_focused(&self, window: &Window, cx: &mut App) -> bool
Returns whether the focused element is this element’s ancestor or the element itself.
Sourcepub fn contains(&self, other: &Self, window: &Window) -> bool
pub fn contains(&self, other: &Self, window: &Window) -> bool
Returns whether other is this element or a descendant of it, using the last rendered frame.
Sourcepub fn dispatch_action(
&self,
action: &dyn Action,
window: &mut Window,
cx: &mut App,
)
pub fn dispatch_action( &self, action: &dyn Action, window: &mut Window, cx: &mut App, )
Dispatches action along the element that rendered this handle.
The action runs through the element’s capture and bubble listeners, the same way a keybinding would dispatch it. Nothing happens if the element isn’t in the last rendered frame.
Trait Implementations§
Source§impl Clone for FocusHandle
impl Clone for FocusHandle
Source§impl Debug for FocusHandle
impl Debug for FocusHandle
Source§impl Drop for FocusHandle
impl Drop for FocusHandle
impl Eq for FocusHandle
Source§impl<'a> From<&'a FocusHandle> for ElementId
impl<'a> From<&'a FocusHandle> for ElementId
Source§fn from(handle: &'a FocusHandle) -> Self
fn from(handle: &'a FocusHandle) -> Self
Source§impl PartialEq for FocusHandle
impl PartialEq for FocusHandle
Source§impl PartialEq<FocusHandle> for WeakFocusHandle
impl PartialEq<FocusHandle> for WeakFocusHandle
Auto Trait Implementations§
impl !RefUnwindSafe for FocusHandle
impl !UnwindSafe for FocusHandle
impl Freeze for FocusHandle
impl Send for FocusHandle
impl Sync for FocusHandle
impl Unpin for FocusHandle
impl UnsafeUnpin for FocusHandle
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