Enum TraversalScopePolicy
pub enum TraversalScopePolicy {
Continue,
Cycle,
}Expand description
Policy for a focus traversal scope, declared via the FocusScope
wrapper widget. Controls what Tab / Shift+Tab does when it reaches the
scope’s ends.
A scope groups + scopes the tab_index numbering of its descendants:
two sibling scopes that both number their children 1, 2, 3 never
interleave — each scope is an independent, ordered unit within its
parent. This is Teksilo’s analogue of Flutter FocusTraversalGroup /
WPF KeyboardNavigation.TabNavigation.
Variants§
Continue
Tab flows out of the scope at its ends into the enclosing scope’s
next member. The scope groups tab_index numbering without trapping
focus — use for logical regions in a continuous Tab order (e.g. dock
panels, where each panel numbers its own controls without colliding
with sibling panels).
Cycle
Tab wraps within the scope and never exits via keyboard navigation. Use for modal dialogs — the one surface whose pattern (ARIA’s Dialog (Modal)) actually calls for containing focus.
Not for popovers or menus. Those implement Disclosure and Menu,
which mandate the opposite: Tab is an exit gesture there, and the
framework already answers it by dismissing the overlay focus leaves
rather than by trapping focus inside it. Wrapping such an overlay in a
Cycle scope defeats that — focus can no longer leave, so the
dismissal never fires and the panel becomes keyboard-inescapable except
via Escape.
Trait Implementations§
§impl Clone for TraversalScopePolicy
impl Clone for TraversalScopePolicy
§fn clone(&self) -> TraversalScopePolicy
fn clone(&self) -> TraversalScopePolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for TraversalScopePolicy
§impl Debug for TraversalScopePolicy
impl Debug for TraversalScopePolicy
impl Eq for TraversalScopePolicy
§impl PartialEq for TraversalScopePolicy
impl PartialEq for TraversalScopePolicy
§fn eq(&self, other: &TraversalScopePolicy) -> bool
fn eq(&self, other: &TraversalScopePolicy) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for TraversalScopePolicy
Auto Trait Implementations§
impl Freeze for TraversalScopePolicy
impl RefUnwindSafe for TraversalScopePolicy
impl Send for TraversalScopePolicy
impl Sync for TraversalScopePolicy
impl Unpin for TraversalScopePolicy
impl UnsafeUnpin for TraversalScopePolicy
impl UnwindSafe for TraversalScopePolicy
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
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
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,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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