Dragging a crop handle past the image edge used to hand the raw rectangle to CropGeometry::constrained, which slid the whole frame toward the centre and moved the anchored corner. drag_crop owns the drag instead: the opposite edges stay put, a locked ratio holds on all eight handles (edges grow about their midline, sliding along a blocked side), the frame stops at the image edge and slides along it, and it keeps a minimum size. Hostile numbers return the start crop. Covered by Given/When/Then scenarios and property tests. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||