forked from 1b-agent/opencadstudio-upstream
fix(layers): key rename and picker state by name, not row
LayerPanel.editing and color_picker_row were positional indices, so a sort/sync/filter between start and commit retargeted renames and swatches. Both are Option<String> now; commit resolves fresh with graceful no-op on deleted layers. Existing rename tests migrated. Tests: layer_rename_commit_follows_name_across_resort (RED first) plus deleted/empty no-op and picker-resort pins. Full suite: 2019 passed / 0 failed / 25 ignored.
This commit is contained in:
1 parent
2d3077e29d
commit
6d6a8b1439
3 files changed
+158
-37
No files matched your search
@@ -3612,10 +3612,8 @@ impl OpenCADStudio {
|
||||
};
|
||||
self.tabs[i].layers.selected = Some(idx);
|
||||
self.tabs[i].layers.selected_multi = vec![idx];
|
||||
if let Some(layer) = self.tabs[i].layers.layers.get(idx) {
|
||||
self.tabs[i].layers.edit_buf = layer.name.clone();
|
||||
}
|
||||
self.tabs[i].layers.editing = Some(idx);
|
||||
self.tabs[i].layers.edit_buf = name.clone();
|
||||
self.tabs[i].layers.editing = Some(name);
|
||||
Task::none()
|
||||
}
|
||||
|
||||
@@ -3633,11 +3631,11 @@ impl OpenCADStudio {
|
||||
return Task::none();
|
||||
};
|
||||
let panel = &mut self.tabs[i].layers;
|
||||
if panel.color_picker_row == Some(idx) {
|
||||
if panel.color_picker_row.as_deref() == Some(name.as_str()) {
|
||||
panel.color_picker_row = None;
|
||||
panel.color_full_palette = false;
|
||||
} else {
|
||||
panel.color_picker_row = Some(idx);
|
||||
panel.color_picker_row = Some(name);
|
||||
panel.color_full_palette = false;
|
||||
panel.selected = Some(idx);
|
||||
// Opening the swatch on a row outside the current
|
||||
|
||||
Reference in new issue
Block a user