Multi-functional grip hover popup
- New hover-popup vocabulary: after a 600 ms dwell on a grip, a single keyboard-navigable popup widget opens listing the operations the entity supports at that grip. Arrow keys move the highlight, Enter commits, Esc / click-outside / mouse-leave dismisses, and the popup width auto-sizes to the longest label with full-row highlighting.
- Per-entity menu vocabulary replaces the generic "drag this point" model. Stretch is always present (and falls through to the regular drag); each entity adds its own operations.
Per-entity grip menus
- Line / Arc / Dimension — Lengthen (line endpoints, arc endpoints) and Radius / Arc Length (arc midpoint) prompt for a typed distance on the command line and apply it along the line direction or around the arc. Dimension text grip exposes Reset Text, Move-with / Independent options; dim-line grip exposes Reverse Arrows.
- Polyline / Polyline2D / Polyline3D / MLine — Add Vertex (chord midpoint, with bulge / elevation kept in sync where applicable) and Remove Vertex (blocked at the minimum two-vertex floor).
- Spline — Add Vertex / Remove Vertex on control vertices, plus Refine Vertices which inserts a CV between every adjacent pair. Weights are kept in sync when present and the knot vector is cleared so the truck conversion rebuilds a uniform knot vector for the new CV count.
- Hatch — Origin Point, Hatch Angle (prompts for degrees, writes
pattern_anglein radians), Hatch Scale (prompts for a positive scalar). - Leader / MultiLeader — Add / Remove Vertex on intermediate path vertices; arrow head and centroid stay Stretch-only. MultiLeader MText location adds Move-with-Leader / Move-Independent (menu vocabulary live; structural multi-leader edits stubbed — Stretch falls through to the regular drag).
- Text / MText — Move with Text and Rotate (Rotate prompts for degrees and sets the entity rotation). MText width grip stays Stretch-only.
Value-prompt flow
- Picking a menu action that needs a numeric input (Lengthen, Radius, Arc Length, Hatch Angle / Scale, Rotate) queues a
GripPendingValueand pushes the action's label to the command line as a prompt. The next command-line submission is routed back throughapply_grip_menu_value; Esc clears the pending value. - Window
frames()subscription drives the dwell tick so the popup opens after the configured delay without requiring continuous mouse motion over the grip.
Refactors
Spline,LeaderandMultiLeaderswitched from theimpl_entity_basics!macro to manualGrippable/PropertyEditable/Transformableimpls sogrip_menucan be overridden per entity.- Grip-shape vocabulary completed (
Square/Rectangle/Triangleonly);Rectangleis reserved for direction-aware mid-segment stretch handles,Trianglefor directional indicators (dimension reverse-arrow flips, dynamic-block parameters).
Full Changelog: v0.4.3...v0.4.4