forked from 1b-agent/opencadstudio-upstream
fix(layer): centralize rename flow
This commit is contained in:
1 parent
b4da342f0e
commit
6cc1bf9755
10 files changed
+92
-107
No files matched your search
+17
-2
@@ -223,6 +223,7 @@ impl OpenCADStudio {
|
||||
selected_after: selected,
|
||||
dirty_before,
|
||||
dirty_after: true,
|
||||
active_layer: None,
|
||||
structure: (!objects.is_empty()).then_some(StructureSnapshot::Objects(objects)),
|
||||
label: label.into(),
|
||||
};
|
||||
@@ -313,10 +314,12 @@ impl OpenCADStudio {
|
||||
.collect();
|
||||
let selected_after: Vec<Handle> = self.tabs[i].scene.selected.iter().copied().collect();
|
||||
let dirty_after = self.tabs[i].dirty;
|
||||
let active_layer_after = self.tabs[i].active_layer.clone();
|
||||
if entities.is_empty()
|
||||
&& !structure_changed
|
||||
&& pending.selected_before == selected_after
|
||||
&& pending.dirty_before == dirty_after
|
||||
&& pending.active_layer == active_layer_after
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -328,6 +331,8 @@ impl OpenCADStudio {
|
||||
selected_after,
|
||||
dirty_before: pending.dirty_before,
|
||||
dirty_after,
|
||||
active_layer: (pending.active_layer != active_layer_after)
|
||||
.then_some((pending.active_layer, active_layer_after)),
|
||||
structure: structure_changed.then_some(StructureSnapshot::Full(pending.structure_before)),
|
||||
label: pending.label,
|
||||
};
|
||||
@@ -351,6 +356,7 @@ impl OpenCADStudio {
|
||||
self.tabs[i].history.pending = Some(PendingHistorySnapshot {
|
||||
label,
|
||||
current_layout,
|
||||
active_layer: self.tabs[i].active_layer.clone(),
|
||||
selected_before,
|
||||
dirty_before,
|
||||
structure_before,
|
||||
@@ -433,6 +439,7 @@ impl OpenCADStudio {
|
||||
selected_after,
|
||||
dirty_before: pending.dirty_before,
|
||||
dirty_after: self.tabs[i].dirty,
|
||||
active_layer: None,
|
||||
structure: Some(StructureSnapshot::Layers(entries)),
|
||||
label: pending.label,
|
||||
};
|
||||
@@ -487,6 +494,7 @@ impl OpenCADStudio {
|
||||
selected_after: self.tabs[i].scene.selected.iter().copied().collect(),
|
||||
dirty_before: pending.dirty_before,
|
||||
dirty_after: self.tabs[i].dirty,
|
||||
active_layer: None,
|
||||
structure: Some(StructureSnapshot::TextStyles(entries)),
|
||||
label: pending.label,
|
||||
};
|
||||
@@ -541,6 +549,7 @@ impl OpenCADStudio {
|
||||
selected_after: self.tabs[i].scene.selected.iter().copied().collect(),
|
||||
dirty_before: pending.dirty_before,
|
||||
dirty_after: self.tabs[i].dirty,
|
||||
active_layer: None,
|
||||
structure: Some(StructureSnapshot::DimStyles(entries)),
|
||||
label: pending.label,
|
||||
};
|
||||
@@ -603,6 +612,7 @@ impl OpenCADStudio {
|
||||
selected_after: self.tabs[i].scene.selected.iter().copied().collect(),
|
||||
dirty_before: pending.dirty_before,
|
||||
dirty_after: self.tabs[i].dirty,
|
||||
active_layer: None,
|
||||
structure: Some(StructureSnapshot::Objects(entries)),
|
||||
label: pending.label,
|
||||
};
|
||||
@@ -629,6 +639,7 @@ impl OpenCADStudio {
|
||||
selected_after: self.tabs[i].scene.selected.iter().copied().collect(),
|
||||
dirty_before,
|
||||
dirty_after: true,
|
||||
active_layer: None,
|
||||
structure: Some(StructureSnapshot::Styles {
|
||||
before,
|
||||
after,
|
||||
@@ -754,6 +765,7 @@ impl OpenCADStudio {
|
||||
selected_after,
|
||||
dirty_before: pending.dirty_before,
|
||||
dirty_after,
|
||||
active_layer: None,
|
||||
structure,
|
||||
label: pending.label,
|
||||
};
|
||||
@@ -908,6 +920,9 @@ impl OpenCADStudio {
|
||||
} else {
|
||||
d.current_layout_after.clone()
|
||||
};
|
||||
if let Some((before, after)) = &d.active_layer {
|
||||
self.tabs[i].active_layer = if undo { before } else { after }.clone();
|
||||
}
|
||||
self.tabs[i].dirty = dirty;
|
||||
changes
|
||||
}
|
||||
@@ -1055,7 +1070,7 @@ impl OpenCADStudio {
|
||||
structure,
|
||||
StructureSnapshot::Full(_) | StructureSnapshot::Layers(_)
|
||||
)
|
||||
}) || d.entities.iter().any(|(_, before, after)| {
|
||||
}) || d.active_layer.is_some() || d.entities.iter().any(|(_, before, after)| {
|
||||
before
|
||||
.as_deref()
|
||||
.is_some_and(|entity| matches!(entity, EntityType::Viewport(_)))
|
||||
@@ -1110,7 +1125,7 @@ impl OpenCADStudio {
|
||||
structure,
|
||||
StructureSnapshot::Full(_) | StructureSnapshot::Layers(_)
|
||||
)
|
||||
}) || d.entities.iter().any(|(_, before, after)| {
|
||||
}) || d.active_layer.is_some() || d.entities.iter().any(|(_, before, after)| {
|
||||
before
|
||||
.as_deref()
|
||||
.is_some_and(|entity| matches!(entity, EntityType::Viewport(_)))
|
||||
|
||||
Reference in new issue
Block a user