mirror of
https://github.com/storytold/filmcraft.git
synced 2026-11-01 22:19:33 -06:00
Ctrl+V with a screenshot or an image copied in another app, or with files
copied in Explorer / Finder, now pastes them. In the Timeline they are
imported and placed at the playhead, end to end, without overwriting
anything: each clip goes on the first free track from the targeted one
outward (up for video, down for audio), and a track is added when every
track is busy there. Ctrl+Shift+V inserts them on the targeted tracks, as
Paste Insert does. In the Project panel Ctrl+V imports into the shown bin.
One undo step takes the paste back.
Copying clips already puts their names on the system clipboard as text, so
media on the clipboard was copied after them; without media, Paste pastes
the copied clips as before.
- engine: edit.pasteMedia {paths, insert, place, bin}; paste_media::
save_pasted_image writes "Pasted Image <n>.png" where voice-over takes and
narrations go (voiceover::media_dir: Scratch Disks > Captured Audio and
Video, else next to the project, else the data directory), trying a
bounded number of names as voiceover::unique_wav_path does.
timeline.place's default length moves to commands::full_duration so both
share it.
- ui-egui: HostHooks::clipboard_media reads the clipboard (ui-egui stays
OS-independent); menus::invoke turns edit.paste / edit.pasteInsert into a
media paste when the Timeline or Project panel has focus. egui-winit drops
the Ctrl+V press when the clipboard holds no text but passes the release,
so a V release without its press puts the press back. That also makes
Ctrl+V paste copied clips when the system clipboard is empty.
- filmcraft (desktop): the hook, with arboard (already in the tree through
egui): copied files first, else an image.
Not covered: the web build, whose browser clipboard works differently.
Tests: paste_media_tests (5: image above the footage with nothing
overwritten and one undo step, tracks added when every track is busy,
Paste Insert, import only, saved image names) and clipboard_paste_ui (4:
an image pasted from a key release with no text, copied files and Paste
Insert, the Project panel imports, copied clips still paste and a plain V
pastes nothing).