mirror of
https://github.com/storytold/cadcraft.git
synced 2026-11-13 17:34:33 -06:00
* ui: omit hidden objects from grip painting and hit tests Respect the drawing's existing visibility predicate when painting selection grips and finding the grip under the pointer. A hidden handle restored through another selection path must not show or activate grips. The visibility predicate also suppresses grips for entities on off or frozen layers, not only objects hidden with HIDEOBJECTS. The frame regression uses ordinary model geometry and HIDEOBJECTS, with an on-screen selected-object control. * Grips: a hidden object takes no hot-grip stretch and no dynamic grips Clicking a hot grip stretches every hot-grip object, and the set can still hold an object that was hidden after it became hot (its grips are no longer painted, but the stretch still moved it). `click_grip` now drops hidden objects from the hot-grip set first. Dynamic-block grips come from the selection, which Undo or another selection source can restore with a hidden block reference in it; `dyngrips::of_selection` now skips hidden references as ordinary grips already do. Adds a test for each, a doc comment on the test helpers, and `cadcraft-io` as a dev-dependency of the UI crate so the dynamic grips test can read the synthetic dynamic-block fixture of the io tests. * Grips: a hidden object in the selection takes no part in a grip edit A grip edit took the whole selection as its targets. A hidden object that was back in the selection (Undo, sssetfirst, a control call) was stretched with a visible object's grip that shared its point, and the Move, Rotate, Scale and Mirror modes transformed it. The grip edit now leaves out what the drawing does not show when a grip becomes hot: a hidden object's own grip is never made hot, the object is not among the targets, and the typed GRIP command does not find its grips. A grip edit with no grip left does not start.