mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-29 20:27:05 -06:00
Fix #693: a click activates its artboard; in-place pastes go onto it
- A press with a selection tool inside an artboard makes it the active one, as the Artboard tool's does; before, only the navigator and the Artboards panel changed it. - Paste in Place, in Front and in Back take `artboard` (the UI passes the active one): the objects go where they were on the artboard they were copied from, on that artboard. Without it, they paste where they were, as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
843507549f
commit
e9bbf43d15
@@ -551,6 +551,26 @@ fn paste_on_all_artboards_keeps_the_offset_to_the_source_artboard() {
|
||||
}
|
||||
}
|
||||
|
||||
/// Paste in Place, in Front and in Back onto the active artboard (#693): where the objects were on
|
||||
/// the artboard they were copied from, on the one named; without it, where they were.
|
||||
#[test]
|
||||
fn in_place_pastes_go_onto_the_artboard_named() {
|
||||
let mut s = Session::new();
|
||||
s.execute("file.new", &json!({"width": 200, "height": 100, "artboards": 3})).unwrap();
|
||||
let boards: Vec<Rect> = doc(&s).artboards.iter().map(|a| a.rect).collect();
|
||||
let r = rect(&mut s, boards[0].x0 + 10.0, boards[0].y0 + 15.0, 20.0, 20.0);
|
||||
copy(&mut s, &[r]);
|
||||
for cmd in ["edit.pasteInPlace", "edit.pasteInFront", "edit.pasteInBack"] {
|
||||
let ids = ids_of(&s.execute(cmd, &json!({"artboard": 2})).unwrap());
|
||||
assert_eq!(doc(&s).bounds_of(&ids, false).unwrap().origin(), Point::new(boards[2].x0 + 10.0, boards[2].y0 + 15.0), "{cmd}");
|
||||
let ids = ids_of(&s.execute(cmd, &json!({})).unwrap());
|
||||
assert_eq!(doc(&s).bounds_of(&ids, false).unwrap().origin(), Point::new(boards[0].x0 + 10.0, boards[0].y0 + 15.0), "{cmd} without one");
|
||||
// An artboard that isn't there: where they were.
|
||||
let ids = ids_of(&s.execute(cmd, &json!({"artboard": 9})).unwrap());
|
||||
assert_eq!(doc(&s).bounds_of(&ids, false).unwrap().origin(), Point::new(boards[0].x0 + 10.0, boards[0].y0 + 15.0), "{cmd} on no artboard");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn paste_remembers_layers_restores_the_source_layers() {
|
||||
let mut s = session();
|
||||
|
||||
Reference in New Issue
Block a user