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: RectLogical coordinates.
clip: RectAncestor clip; a point must be inside both to hit.
shape: HitShapeThe 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: RectThe 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: 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: boolThe sink declared key_up: releases reach it too. Without it a
release is dropped at routing, and the sink hears presses only.
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,
so it reaches the enclosing menu the way an
unclaimed key reaches the enclosing sink. 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. None where no
zone encloses it: files dragged over
such a region look past it to the topmost zone beneath.
focusable: boolA 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: 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§
Auto Trait Implementations§
impl Freeze for HitRegion
impl RefUnwindSafe for HitRegion
impl Send for HitRegion
impl Sync for HitRegion
impl Unpin for HitRegion
impl UnsafeUnpin for HitRegion
impl UnwindSafe for HitRegion
Blanket Implementations§
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,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.