forked from 1b-agent/opencadstudio-upstream
feat(solid history): booleans keep the solids they joined editable
With SOLIDHIST on, UNION, SUBTRACT and INTERSECT no longer reduce the result's history to a frozen body: each solid's history joins the result's under a boolean step, in the order the result applied them. The Properties palette lists a composite's solids under Operand; the one chosen shows its own geometry rows and grips, placed where it sits in the composite, and editing it replays the whole tree. A composite read from a file keeps its saved body; the tree is replayed only on edits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d1f3bf3013
commit
d3033caf24
28 files changed
+383
-52
No files matched your search
@@ -2732,6 +2732,19 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task<Message> {
|
||||
self.tabs[i].properties.edit_choice_open = false;
|
||||
return Task::none();
|
||||
}
|
||||
if field == crate::scene::model::solid_history::PROP_OPERAND {
|
||||
// Which solid of a composite to edit: palette state only.
|
||||
for handle in &handles {
|
||||
crate::scene::model::solid_history::select_operand(
|
||||
&self.tabs[i].scene.document,
|
||||
*handle,
|
||||
&value,
|
||||
);
|
||||
}
|
||||
self.tabs[i].properties.edit_choice_open = false;
|
||||
self.refresh_properties();
|
||||
return Task::none();
|
||||
}
|
||||
if crate::scene::model::solid_history::is_history_choice(field) {
|
||||
self.apply_property_op(i, "CHPROP", &handles, |app, handle| {
|
||||
if app.tabs[i].scene.is_layer_locked(handle) {
|
||||
|
||||
Reference in new issue
Block a user