forked from 1b-agent/fieldcraft-upstream
View state: hide, show and isolate viewport items, saved with the model
view.hide, view.show, view.isolate and view.show_all change which bodies, surfaces, datums, boundary conditions, loads, reference points and couplings the viewport draws. The hidden items are view state: the manifest's `view` keeps them, a change marks the model unsaved, but it is neither journalled nor undone and leaves results current. Items that go away are forgotten. Headless pictures leave hidden items out; the glyph builders take a filter. Tools > View > Show All claims the commands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
d9824de4a5
commit
d7ec7f486a
17 files changed
+431
-25
No files matched your search
@@ -238,6 +238,11 @@ pub struct Session {
|
||||
/// Identifies the open document: it changes when another model, sample or design is opened
|
||||
/// in place of the current one, never with an edit (see [`Session::opened`]).
|
||||
opened: u64,
|
||||
/// What the viewport hides (`view.*`): saved with the model, but no edit of it, so it is
|
||||
/// neither journalled nor undone, and it leaves results current.
|
||||
pub view: fieldcraft_io::View,
|
||||
/// The view as last saved (or opened): a change to it is unsaved too.
|
||||
saved_view: fieldcraft_io::View,
|
||||
}
|
||||
|
||||
impl Session {
|
||||
@@ -275,6 +280,8 @@ impl Session {
|
||||
self.journal.push((id.to_string(), params.clone()));
|
||||
self.revision = next_revision();
|
||||
self.record_undo(before);
|
||||
// An item deleted (or a body cut into cells) is no longer hidden.
|
||||
cmd::view::forget_missing(self);
|
||||
}
|
||||
}
|
||||
result
|
||||
@@ -315,7 +322,7 @@ impl Session {
|
||||
/// Whether the session has changes its file does not hold. Undoing back to the saved state
|
||||
/// makes it clean again.
|
||||
pub fn is_dirty(&self) -> bool {
|
||||
self.saved_revision.unwrap_or(0) != self.revision
|
||||
self.saved_revision.unwrap_or(0) != self.revision || self.view != self.saved_view
|
||||
}
|
||||
|
||||
/// The stored result of a step, if it was solved in the current state (an edit makes it stale;
|
||||
@@ -356,6 +363,7 @@ impl Session {
|
||||
pub(crate) fn mark_saved(&mut self, path: String) {
|
||||
self.path = Some(path);
|
||||
self.saved_revision = Some(self.revision);
|
||||
self.saved_view = self.view.clone();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user