Merge origin/main into plugin/host-model-api

Conflicts were additive: main's AddLayer/ModifyLayer (LayerConfig, OptHandle)
alongside this branch's v7 system-variable, transaction, selection and solid
operations. Main's variants keep their positions in the IPC enums; the v7
additions follow them. src/io/mod.rs takes main's reworded Shape-rotation note.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Felix RiestraandClaude Sonnet 5 committed 2026-09-21 15:12:58 +02:00
commit 6b8056cfeb
28 files changed
+1425 -97

No files matched your search

+3
View File
@@ -401,6 +401,7 @@ impl OpenCADStudio {
{
self.snapper.clear_tracking();
self.otrack_active = None;
self.otrack_cross = None;
self.otrack_kind = None;
}
if let Some((started, tab_id, before)) = perf_edit_before {
@@ -437,6 +438,7 @@ impl OpenCADStudio {
pub(in crate::app) fn reset_tracking_after_point(&mut self) {
self.snapper.clear_tracking();
self.otrack_active = None;
self.otrack_cross = None;
self.otrack_kind = None;
}
@@ -4017,6 +4019,7 @@ impl OpenCADStudio {
if !self.snapper.otrack_enabled {
self.snapper.clear_tracking();
self.otrack_active = None;
self.otrack_cross = None;
self.otrack_kind = None;
}
Task::none()
+3
View File
@@ -1479,6 +1479,7 @@ impl OpenCADStudio {
Some((base, dir))
});
self.otrack_active = otrack_hit.map(|hit| (hit.base, hit.dir)).or(drafting_guide);
self.otrack_cross = otrack_hit.and_then(|hit| hit.cross);
self.otrack_kind = otrack_hit.map(|hit| hit.kind);
@@ -2190,6 +2191,7 @@ impl OpenCADStudio {
None
};
self.otrack_active = otrack_hit.map(|h| (h.base, h.dir));
self.otrack_cross = otrack_hit.and_then(|h| h.cross);
self.otrack_kind = otrack_hit.map(|h| h.kind);
// Parallel snap: with nothing else snapped or tracked, lock
@@ -2208,6 +2210,7 @@ impl OpenCADStudio {
(self.last_point, self.snapper.parallel_ref)
{
self.otrack_active = Some((base, dir.as_dvec3()));
self.otrack_cross = None;
}
self.tabs[i].snap_result = Some(par);
}