mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-27 11:17:01 -06:00
Guides: Lock Guides keeps guides deselected after Undo, Exit Isolation Mode and Paste
With View > Guides > Lock Guides on, Session::select drops the paths made into guides from the selection (#1534), but commands that set the selection another way skipped that filter and left a locked guide selected, so the next move moved it. object.exitIsolation selected an isolated guide path. Undo, Redo, a canceled undo group, a canceled drag or dialog preview and a failed command.batch brought back locked guide paths and ruler guides in the selection. Unlock All, Show All and Paste selected the guide paths they unlocked, showed or pasted. Locking the guides deselected them in the active document only. The filter is now deselect_guides, which also clears the selected ruler guides. Session::select and Session::edit run it while Lock Guides is on, and so do object.exitIsolation, Undo, Redo, Session::cancel_interaction, a canceled undo group and a failed batch. Locking the guides deselects them in every open document. With Lock Guides off, the selection is set as before. Docs: docs/mcp.md.
This commit is contained in:
@@ -1061,11 +1061,16 @@ fn isolate(s: &mut Session, p: &Value) -> Result<Value> {
|
||||
}
|
||||
|
||||
fn exit_isolation(s: &mut Session, _: &Value) -> Result<Value> {
|
||||
let guides_locked = s.menu.guides_locked;
|
||||
let st = s.doc_mut()?;
|
||||
if let Some(i) = st.isolation.take() {
|
||||
super::distortcmds::finish_edit_text(st, i);
|
||||
let target = st.doc.parent_of(i).filter(|p| st.doc.node(*p).is_some_and(|n| n.extras().shaper.is_some())).unwrap_or(i);
|
||||
st.selection.set([target]);
|
||||
// A guide path isolated while Lock Guides is on isn't selected (#1534).
|
||||
if guides_locked {
|
||||
crate::deselect_guides(&st.doc, &mut st.selection);
|
||||
}
|
||||
}
|
||||
st.revision += 1;
|
||||
ok()
|
||||
|
||||
Reference in New Issue
Block a user