From d71394c43ab770c661230e0e18724ef05920a41d Mon Sep 17 00:00:00 2001 From: tom-englert Date: Tue, 20 Aug 2024 10:55:29 +0200 Subject: [PATCH] Simplify adding tabs --- BuildTools/format.bat | 4 +++- ILSpy/Docking/DockWorkspace.cs | 5 +++++ ILSpy/Docking/PaneCollection.cs | 8 ++++---- ILSpy/MainWindow.xaml.cs | 12 ++++-------- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/BuildTools/format.bat b/BuildTools/format.bat index be49dc68ce..74018f350f 100644 --- a/BuildTools/format.bat +++ b/BuildTools/format.bat @@ -1,3 +1,5 @@ @rem This file can be used to trigger the commit hook's formatting, @rem modifying the local formatting even if not committing all changes. -"%ProgramFiles%\Git\usr\bin\bash.exe" BuildTools\pre-commit --format \ No newline at end of file +pushd %~dp0\.. +"%ProgramFiles%\Git\usr\bin\bash.exe" BuildTools\pre-commit --format +popd \ No newline at end of file diff --git a/ILSpy/Docking/DockWorkspace.cs b/ILSpy/Docking/DockWorkspace.cs index a1fcd68cda..0a4c8fe711 100644 --- a/ILSpy/Docking/DockWorkspace.cs +++ b/ILSpy/Docking/DockWorkspace.cs @@ -88,6 +88,11 @@ private void MainWindow_Instance_CurrentAssemblyListChanged(object sender, Notif private void Documents_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var collection = (PaneCollection)sender; + if (e.Action == NotifyCollectionChangedAction.Add) + { + ActiveTabPage = e.NewItems?[0] as TabPageModel; + } + bool canClose = collection.Count > 1; foreach (var item in collection) { diff --git a/ILSpy/Docking/PaneCollection.cs b/ILSpy/Docking/PaneCollection.cs index 5b58610625..72b1b851be 100644 --- a/ILSpy/Docking/PaneCollection.cs +++ b/ILSpy/Docking/PaneCollection.cs @@ -20,15 +20,13 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; -using System.ComponentModel; -using System.Linq; using ICSharpCode.ILSpy.ViewModels; namespace ICSharpCode.ILSpy.Docking { public class PaneCollection : INotifyCollectionChanged, ICollection - where T : PaneModel + where T : PaneModel, new() { private ObservableCollection observableCollection = new ObservableCollection(); @@ -39,8 +37,10 @@ public PaneCollection() observableCollection.CollectionChanged += (sender, e) => CollectionChanged?.Invoke(this, e); } - public void Add(T item) + public void Add(T item = null) { + item ??= new T(); + observableCollection.Add(item); item.IsVisible = true; diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index 0f6a4953d5..bebfd98628 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -831,8 +831,7 @@ static bool CanResolveTypeInPEFile(MetadataFile module, ITypeReference typeRef, void MainWindow_Loaded(object sender, RoutedEventArgs e) { - DockWorkspace.Instance.TabPages.Add(new() { }); - DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.First(); + DockWorkspace.Instance.TabPages.Add(); var loadPreviousAssemblies = Options.MiscSettingsPanel.CurrentMiscSettings.LoadPreviousAssemblies; @@ -1087,8 +1086,7 @@ public void SelectNode(SharpTreeNode obj, bool inNewTabPage, bool setFocus) { if (inNewTabPage) { - DockWorkspace.Instance.TabPages.Add(new TabPageModel() { }); - DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last(); + DockWorkspace.Instance.TabPages.Add(); AssemblyTreeView.SelectedItem = null; } @@ -1130,8 +1128,7 @@ internal void SelectNodes(IEnumerable nodes, bool inNewTabPage, { if (inNewTabPage) { - DockWorkspace.Instance.TabPages.Add(new TabPageModel() { }); - DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last(); + DockWorkspace.Instance.TabPages.Add(); } // Ensure nodes exist @@ -1575,8 +1572,7 @@ internal void NavigateTo(RequestNavigateEventArgs e, bool recordHistory = true, { if (inNewTabPage) { - DockWorkspace.Instance.TabPages.Add(new() { }); - DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last(); + DockWorkspace.Instance.TabPages.Add(); } if (e.Uri.Host == "aboutpage")