diff --git a/Minint/ViewModels/EditorViewModel.cs b/Minint/ViewModels/EditorViewModel.cs index 5fc3c76..4d3f3ed 100644 --- a/Minint/ViewModels/EditorViewModel.cs +++ b/Minint/ViewModels/EditorViewModel.cs @@ -231,26 +231,34 @@ public partial class EditorViewModel : ViewModelBase private void MoveDocumentUp() { if (Container is null || ActiveDocument is null) return; - int idx = Container.Documents.IndexOf(ActiveDocument); + var doc = ActiveDocument; + int idx = Container.Documents.IndexOf(doc); if (idx <= 0) return; (Container.Documents[idx], Container.Documents[idx - 1]) = (Container.Documents[idx - 1], Container.Documents[idx]); SyncDocumentsList(); - _suppressDocumentSync = true; - ActiveDocument = Container.Documents[idx - 1]; - _suppressDocumentSync = false; + ReselectDocument(doc); } [RelayCommand] private void MoveDocumentDown() { if (Container is null || ActiveDocument is null) return; - int idx = Container.Documents.IndexOf(ActiveDocument); + var doc = ActiveDocument; + int idx = Container.Documents.IndexOf(doc); if (idx < 0 || idx >= Container.Documents.Count - 1) return; (Container.Documents[idx], Container.Documents[idx + 1]) = (Container.Documents[idx + 1], Container.Documents[idx]); SyncDocumentsList(); + ReselectDocument(doc); + } + + private void ReselectDocument(MinintDocument doc) + { + // Force SelectedItem rebinding after list rebuild even when the selected object is the same reference. _suppressDocumentSync = true; - ActiveDocument = Container.Documents[idx + 1]; + ActiveDocument = null; + ActiveDocument = doc; _suppressDocumentSync = false; + SyncLayersAndCanvas(doc); } #endregion