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<DropOwner>,
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<DropOwner>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.