feat(leader): dynamic MLEADER text placement, grips, and consistent arrows
Reworks MLEADER text/leader geometry and grip editing, and aligns LEADER to MLEADER's conventions (kept as separate entities). Text & landing (render path): - Text is side-anchored on the leader-facing edge and reads outward; the side, alignment and the horizontal landing are recomputed every frame from the text grip's position relative to the leader, so moving the arrow or the text re-mirrors the whole layout and the landing stays attached to the text's near edge. - Fixes #49: text was centred on the leader endpoint regardless of side. Grips: - Text-location grip plus an MTEXT-style triangle wrap-width grip at the box's far edge; dragging it sets the MText wrap width. - Multifunction grip menu restored and made functional: leader-line vertices offer Add Leader / Remove Leader (Add grabs the new arrow so it follows the cursor — click places, Esc removes it); the text grip offers Move Independent (text only) and Move with Leader (translates the whole multileader via a move-all sentinel grip). Arrows: - LEADER and MLEADER arrowheads now render at the same size (text height), matching previews. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
6f64d8d0d9
commit
8b3d083789
6 changed files with 395 additions and 162 deletions
|
|
@ -205,6 +205,10 @@ pub(super) struct OpenCADStudio {
|
|||
/// until dismissed (click outside, ESC, cursor leaves the grip).
|
||||
grip_popup: Option<GripPopup>,
|
||||
grip_pending: Option<GripPendingValue>,
|
||||
/// A leader line just added via the "Add Leader" grip menu whose arrow is
|
||||
/// being placed (follows the cursor). `(entity handle, new-arrow grip id)`.
|
||||
/// Esc before the placement click removes it again.
|
||||
grip_add_provisional: Option<(acadrust::Handle, usize)>,
|
||||
/// Open Quick Select panel state. `None` = panel closed. Filters are
|
||||
/// applied via `Message::QSelectApply`; the panel is dismissed on
|
||||
/// Apply / Cancel / Esc / outside-click.
|
||||
|
|
@ -980,6 +984,7 @@ impl OpenCADStudio {
|
|||
grip_hover: None,
|
||||
grip_popup: None,
|
||||
grip_pending: None,
|
||||
grip_add_provisional: None,
|
||||
qselect: None,
|
||||
show_ucs_icon: true,
|
||||
show_viewcube: true,
|
||||
|
|
|
|||
Loading…
Reference in a new issue