26 lines
1.4 KiB
Markdown
26 lines
1.4 KiB
Markdown
# Bubble menu authoring
|
|
|
|
Instance `bubble_button.tscn` for each action, or attach `bubble_button.gd`
|
|
to an existing Button. Set its neutral size, desktop and compact anchors,
|
|
font-size limits, and deterministic motion values in the Inspector. A label
|
|
child can be assigned through `label_control_path` when wrapped text is needed.
|
|
Text size is calculated once per layout from the neutral smaller dimension and
|
|
the profile ratio.
|
|
|
|
Place the buttons under a Control using `bubble_cluster.gd`. Give the cluster
|
|
the ordered BubbleButton references with `configure()`, then call
|
|
`apply_layout()` when its available size or responsive layout changes. The
|
|
button order defines explicit keyboard and controller focus neighbors. Compact
|
|
anchors and minimum sizes remain authored per button.
|
|
|
|
The shared profile owns the palette, rounded styles, proportional-font ratio,
|
|
hover response, and contact tuning. Labels, actions, sizes, anchors, per-button
|
|
motion, responsive wrapping, availability, and confirmation behavior remain
|
|
owned by the menu. Connect each Button's `pressed` signal in that parent menu.
|
|
|
|
`motion_scale` defaults to `1.0`. Setting it to `0.0` removes idle drift and
|
|
deformation while retaining hover and focus feedback.
|
|
|
|
Contact is a deterministic, bounded visual correction around authored anchors.
|
|
Real physics is intentionally avoided so layouts, focus order, and hit targets
|
|
remain stable.
|