fix(layers): carry layer name instead of row index in Message::Layer*

Closes the view-to-dispatch resort race: the nine Layer* variants plus ColorPickTarget::Layer now carry the layer name and resolve to the current panel row at dispatch time via layer_panel_index; unknown names no-op. View sites (layer panel, ribbon dropdown) and the CLI/plugin path send names, so the CLI position lookup and the ribbon enumerate are deleted. Panel-internal selection state stays index-based. Tests: layer_toggle_visible_targets_layer_by_name_after_resort pins name targeting across a re-sort; layer_toggle_visible_unknown_name_is_noop pins the graceful no-op. Full suite: 1974 passed / 0 failed / 25 ignored.
This commit is contained in:
Karim Jerbi committed 2026-10-05 22:46:01 +01:00
1 parent c5f8eb2921
commit 5f016e1192
7 files changed
+186 -52

No files matched your search

+12 -12
View File
@@ -1583,8 +1583,8 @@ pub enum ColorPickTarget {
PropertiesField(String),
/// Current creation colour (ribbon).
Ribbon,
/// A layer's colour, by panel row index.
Layer(usize),
/// A layer's colour, by layer name.
Layer(String),
/// A saved layer-state layer's colour, by editor row index.
LayerState(usize),
/// The MText editor's selection (or global) colour.
@@ -2669,28 +2669,28 @@ pub enum Message {
XrefRowFindReplacePrompt(usize),
XrefRowChangePathEnter,
XrefRowChangePathLeave,
LayerToggleVisible(usize),
LayerToggleLock(usize),
LayerToggleFreeze(usize),
LayerTogglePlot(usize),
LayerToggleVisible(String),
LayerToggleLock(String),
LayerToggleFreeze(String),
LayerTogglePlot(String),
/// Sort the Layer Manager table by a clicked column header.
LayerSort(crate::ui::window::layers::LayerSortCol),
/// Toggle per-viewport freeze: (layer_index, vp_col_index)
LayerToggleVpFreeze(usize, usize),
/// Toggle per-viewport freeze: (layer_name, vp_col_index)
LayerToggleVpFreeze(String, usize),
LayerNew,
LayerDelete,
/// Confirm deleting a non-empty layer (erases its objects too).
LayerDeleteConfirm,
LayerSetCurrent,
LayerSelect(usize),
LayerRenameStart(usize),
LayerSelect(String),
LayerRenameStart(String),
LayerRenameEdit(String),
LayerColorPickerToggle(usize),
LayerColorPickerToggle(String),
LayerColorMorePalette,
LayerColorSet(codec::types::Color),
LayerLinetypeSet(String),
LayerLineweightSet(LineWeight),
LayerTransparencyEdit(usize, String),
LayerTransparencyEdit(String, String),
LayerRenameCommit,
// ── Layer State Manager ─────────────────────────────────────────────
LayerStateManagerOpen,