Make raster layers behave like vector on the timeline. - Timeline: draw a diamond per `RasterKeyframe` (mirrors the vector keyframe block). - New Keyframe (K / menu): on a raster layer, insert a BLANK cel at the playhead via a new undoable `AddRasterKeyframeAction` (+ `RasterLayer::insert_blank_keyframe_at` / `remove_keyframe`). Vector path unchanged. - Stop lazy creation: paint tools now edit the ACTIVE keyframe (at-or-before the playhead) instead of creating one. The brush captures the active keyframe's exact time; `RasterStroke`/`RasterFillAction` resolve via `keyframe_at_mut` (error if none); the tool-site `ensure_keyframe_at` blocks (brush/fill/bucket/wand/quick- select/floating-lift) are removed — each read already bails when no keyframe exists. New layers still seed a keyframe at the playhead, so there's normally one to paint into; painting before the first keyframe is now a no-op (as intended). Next: onion skinning. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| tests | ||
| Cargo.toml | ||