Skip to main content

HitRegion

Struct HitRegion 

Source
pub struct HitRegion {
Show 22 fields pub key: Key, pub origin: OriginId, pub rect: Rect, pub clip: Rect, pub shape: HitShape, pub payload: Option<Value>, pub drag: Option<Value>, pub parent_rect: Rect, pub edit_origin: Option<Vec2>, pub select_scope: Option<Key>, pub key_sink: Option<Value>, pub key_up: bool, pub context_menu: Option<MenuOwner>, pub drop: Option<MenuOwner>, pub focusable: bool, pub window: Option<WindowRole>, pub hover: Option<Value>, pub group: Option<u64>, pub click_sound: Option<SoundId>, pub hover_sound: Option<SoundId>, pub cursor: Option<CursorShape>, pub slider: Option<Box<SliderTrack>>,
}

Fields§

§key: Key§origin: OriginId§rect: Rect

Logical coordinates.

§clip: Rect

Ancestor clip; a point must be inside both to hit.

§shape: HitShape

The shape inside rect a point must also be in, when there is one.

§payload: Option<Value>

Click payload; None for hover-only regions (hoverable, edits) — a click on those emits no UiEvent.

§drag: Option<Value>

Drag tag when the node declared on_drag: pressing it starts a pointer-captured drag, and cursor motion until release emits {kind="drag", phase, x, y, dx, dy, parent, tag} events on this node.

§parent_rect: Rect

The node’s parent rect (logical) — carried into drag payloads so handlers can turn absolute positions into fractions of the container (a splitter’s ratio) without any geometry query API.

§edit_origin: Option<Vec2>

Content-box origin of an editable text node; None for plain hits.

§select_scope: Option<Key>

The selection scope this node is inside, when it is inside one (docs/adr/0017-selection-as-a-scope.md): a press here starts a drag-select over the scope’s text. A region that also carries a click payload is a control first — a press on a button inside a selectable card clicks it — so this is read only where nothing else claims the press.

§key_sink: Option<Value>

Key-sink tag when the node declared on_key: clicking it takes key focus, and key presses then arrive on it carrying this tag.

§key_up: bool

The sink declared key_up: releases reach it too. Without it a release is dropped at routing, and the sink hears presses only.

§context_menu: Option<MenuOwner>

The context menu a secondary press here opens: the node’s own on_context_menu, or the nearest enclosing one — a container offering a menu for everything inside it is the common case, and a press on a child that declared none is unclaimed in the sense ADR 0011 gave keys, so it reaches the enclosing menu the way an unclaimed key reaches the enclosing sink (backlog T1). Resolved at emission, where the tree is; the walk stops at the modal boundary and skips a disabled node’s own. The press emits {kind="contextmenu", x, y, tag} on the owner, not on this node. None when nothing encloses this region offers one, and the press is swallowed here.

§drop: Option<MenuOwner>

The drop zone this region belongs to — its own on_drop or the nearest enclosing declaration’s — resolved at emission (ADR 0031, decision 2). None where no zone encloses it: files dragged over such a region look past it to the topmost zone beneath.

§focusable: bool

A press on this node moves keyboard focus to it (an editor, a sink, a control, a focusable node — never a disabled one).

§window: Option<WindowRole>

Window-chrome role: interactions become WindowCommands, not events.

§hover: Option<Value>

Hover tag when the node declared on_hover: the pointer entering or leaving emits {kind="hover", phase="enter"|"leave", tag} on it.

§group: Option<u64>

Hover group id (NodeSpec::hover_group): hovering or pressing any member lights up every member.

§click_sound: Option<SoundId>

Sounds the node declared (NodeSpec::click_sound / hover_sound): a click / the pointer entering queues them as sound requests the core turns into audio commands.

§hover_sound: Option<SoundId>§cursor: Option<CursorShape>

Pointer shape declared by the node (NodeSpec::cursor). None = the I-beam over text, the arrow otherwise (Interaction::implied_shape).

§slider: Option<Box<SliderTrack>>

A slider’s track when the node declared on_change (ADR 0034, decision 4): a press here proposes the value under the pointer and captures the pointer until release, each new value a change event. Boxed: nearly every region has none.

Trait Implementations§

Source§

impl Clone for HitRegion

Source§

fn clone(&self) -> HitRegion

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 Debug for HitRegion

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

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> 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<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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

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<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

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

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, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

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> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

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