Review: Lock and Hide › All Artwork Above use Selection::deselect_uneditable; ROADMAP (#1109)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bflatastic 2026-10-11 11:00:08 +07:00
parent cd34e4097a
commit 4d52b043cf
3 changed files with 5 additions and 8 deletions

File diff suppressed because one or more lines are too long

View File

@ -238,11 +238,7 @@ fn above(s: &mut Session, lock: bool) -> Result<Value> {
}
}
}
// Hidden or locked content can't stay selected.
let hidden: Vec<NodeId> = sel.objects.iter().copied().filter(|o| !d.is_editable(*o)).collect();
for h in hidden {
sel.remove(h);
}
sel.deselect_uneditable(d);
Ok(())
})?;
Ok(json!({ "count": n }))

View File

@ -118,7 +118,8 @@ fn lock_all_artwork_above_deselects_the_objects_it_locks() {
}
/// Hide › All Artwork Above deselects the selected objects it hides (here one in a sublayer above)
/// and selected objects that were hidden before; the key object stays when it is still shown.
/// and selected objects that were hidden before. The one object left can't be the key object, so
/// the key goes too; undo brings both back.
#[test]
fn hide_all_artwork_above_deselects_the_objects_it_hides() {
let mut s = session();
@ -131,7 +132,7 @@ fn hide_all_artwork_above_deselects_the_objects_it_hides() {
s.execute("select.key", &json!({"id": a.0})).unwrap();
s.execute("object.hide.above", &json!({})).unwrap();
assert!(!node(&s, sub).visible);
assert_eq!((selected(&s), key(&s)), (vec![a], Some(a)));
assert_eq!((selected(&s), key(&s)), (vec![a], None));
s.execute("edit.undo", &json!({})).unwrap();
assert_eq!((selected(&s), key(&s)), (vec![hidden, a, b], Some(a)));
}