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 be49dc68c..74018f350 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 a1fcd68cd..0a4c8fe71 100644 --- a/ILSpy/Docking/DockWorkspace.cs +++ b/ILSpy/Docking/DockWorkspace.cs @@ -88,6 +88,11 @@ namespace ICSharpCode.ILSpy.Docking 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 5b5861062..72b1b851b 100644 --- a/ILSpy/Docking/PaneCollection.cs +++ b/ILSpy/Docking/PaneCollection.cs @@ -20,15 +20,13 @@ using System.Collections; 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 @@ namespace ICSharpCode.ILSpy.Docking 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 0f6a4953d..bebfd9862 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -831,8 +831,7 @@ namespace ICSharpCode.ILSpy 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 @@ namespace ICSharpCode.ILSpy { 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 @@ namespace ICSharpCode.ILSpy { 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 @@ namespace ICSharpCode.ILSpy { if (inNewTabPage) { - DockWorkspace.Instance.TabPages.Add(new() { }); - DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last(); + DockWorkspace.Instance.TabPages.Add(); } if (e.Uri.Host == "aboutpage")