diff --git a/ILSpy/Commands/DecompileInNewViewCommand.cs b/ILSpy/Commands/DecompileInNewViewCommand.cs index e1338eb5d..f1d9f5299 100644 --- a/ILSpy/Commands/DecompileInNewViewCommand.cs +++ b/ILSpy/Commands/DecompileInNewViewCommand.cs @@ -69,7 +69,7 @@ namespace ICSharpCode.ILSpy.Commands if (nodes.Length == 0) return; - var title = string.Join(", ", nodes.Select(x => x.ToString())); + var title = string.Join(", ", nodes.Select(x => x.Text.ToString())); DockWorkspace.Instance.TabPages.Add(new ViewModels.TabPageModel() { Language = MainWindow.Instance.CurrentLanguage, LanguageVersion = MainWindow.Instance.CurrentLanguageVersion }); DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last(); MainWindow.Instance.SelectNodes(nodes); diff --git a/ILSpy/Docking/PaneCollection.cs b/ILSpy/Docking/PaneCollection.cs index 6f13b6b70..5189865b9 100644 --- a/ILSpy/Docking/PaneCollection.cs +++ b/ILSpy/Docking/PaneCollection.cs @@ -26,13 +26,12 @@ using ICSharpCode.ILSpy.ViewModels; namespace ICSharpCode.ILSpy.Docking { - public class PaneCollection : INotifyCollectionChanged, INotifyPropertyChanged, ICollection + public class PaneCollection : INotifyCollectionChanged, ICollection where T : PaneModel { private ObservableCollection observableCollection = new ObservableCollection(); public event NotifyCollectionChangedEventHandler CollectionChanged; - public event PropertyChangedEventHandler PropertyChanged; public PaneCollection() { @@ -41,9 +40,7 @@ namespace ICSharpCode.ILSpy.Docking public void Add(T item) { - if (!this.Any(pane => pane.ContentId == item.ContentId)) { - observableCollection.Add(item); - } + observableCollection.Add(item); item.IsVisible = true; item.IsActive = true; diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index e0b39b398..01e573f79 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -55,6 +55,7 @@ + diff --git a/ILSpy/Metadata/CoffHeaderTreeNode.cs b/ILSpy/Metadata/CoffHeaderTreeNode.cs index 5cf71b243..e9973a763 100644 --- a/ILSpy/Metadata/CoffHeaderTreeNode.cs +++ b/ILSpy/Metadata/CoffHeaderTreeNode.cs @@ -44,7 +44,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + var dataGrid = new DataGrid { Columns = { new DataGridTextColumn { IsReadOnly = true, Header = "Member", Binding = new Binding("Member") }, diff --git a/ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs b/ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs index e9e4fd582..8a2ae5b6a 100644 --- a/ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/AssemblyTableTreeNode.cs @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("AssemblyView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs b/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs index a7156bfdf..a64a6f144 100644 --- a/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs @@ -45,7 +45,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("ConstantsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs b/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs index a43fe4a5f..0afd40597 100644 --- a/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("CustomAttributesView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs b/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs index 8588de72e..4f7b3520e 100644 --- a/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("DeclSecurityAttrsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/EventTableTreeNode.cs b/ILSpy/Metadata/CorTables/EventTableTreeNode.cs index 0a21818f0..57f3d57c3 100644 --- a/ILSpy/Metadata/CorTables/EventTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/EventTableTreeNode.cs @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("EventDefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs b/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs index 0315f46a9..b52a044cc 100644 --- a/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("ExportedTypesView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs b/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs index c2c893ce5..b1d84c41c 100644 --- a/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("FieldLayoutsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs b/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs index a7d7de526..da3aee304 100644 --- a/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("FieldDefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/FileTableTreeNode.cs b/ILSpy/Metadata/CorTables/FileTableTreeNode.cs index b603e7193..490f615a7 100644 --- a/ILSpy/Metadata/CorTables/FileTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/FileTableTreeNode.cs @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("FilesView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs b/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs index 8326729c3..c7b5a1bc6 100644 --- a/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("GenericParamConstraintsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs b/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs index e3ffca624..3ced18640 100644 --- a/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("GenericParamsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs b/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs index f098ec073..d199450ea 100644 --- a/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("ManifestResourcesView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs b/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs index 82adee479..b56cd8502 100644 --- a/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("MemberRefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs index 5d4ef7483..2200709e4 100644 --- a/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("MethodImplView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs index 0bda25207..178d07b13 100644 --- a/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("MethodSemanticsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs index e982284ff..891acc84b 100644 --- a/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("MethodSpecsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs index 82732d517..855b2589a 100644 --- a/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("MethodDefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/ModuleRefTableTreeNode.cs b/ILSpy/Metadata/CorTables/ModuleRefTableTreeNode.cs index e191ea4c4..8b2f65e8b 100644 --- a/ILSpy/Metadata/CorTables/ModuleRefTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ModuleRefTableTreeNode.cs @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("ModuleRefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs b/ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs index 629b2e545..836f905a2 100644 --- a/ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ModuleTableTreeNode.cs @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("ModulesView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/ParamTableTreeNode.cs b/ILSpy/Metadata/CorTables/ParamTableTreeNode.cs index 3b3a849d1..82a4b7068 100644 --- a/ILSpy/Metadata/CorTables/ParamTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ParamTableTreeNode.cs @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("ParamsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs b/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs index 50ca0e4f8..d78dcaf5d 100644 --- a/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs @@ -49,7 +49,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("PropertyDefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs b/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs index bbded971b..a3a6828fa 100644 --- a/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs @@ -48,7 +48,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("StandAloneSigsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs b/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs index 47f3cb579..e90e51155 100644 --- a/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs @@ -53,7 +53,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("TypeDefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs b/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs index 04d99ce9a..4cc4a17c3 100644 --- a/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs @@ -51,7 +51,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("TypeRefsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs b/ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs index e669350b1..ab96d85ea 100644 --- a/ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/TypeSpecTableTreeNode.cs @@ -52,7 +52,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + ListView view = Helpers.CreateListView("TypeSpecsView"); var metadata = module.Metadata; diff --git a/ILSpy/Metadata/DataDirectoriesTreeNode.cs b/ILSpy/Metadata/DataDirectoriesTreeNode.cs index 51f6e43dd..32d9e3105 100644 --- a/ILSpy/Metadata/DataDirectoriesTreeNode.cs +++ b/ILSpy/Metadata/DataDirectoriesTreeNode.cs @@ -41,7 +41,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(ViewModels.TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + var dataGrid = new DataGrid { Columns = { new DataGridTextColumn { IsReadOnly = true, Header = "Name", Binding = new Binding("Name") }, diff --git a/ILSpy/Metadata/DosHeaderTreeNode.cs b/ILSpy/Metadata/DosHeaderTreeNode.cs index 8fbaeb8fc..13ed02a4f 100644 --- a/ILSpy/Metadata/DosHeaderTreeNode.cs +++ b/ILSpy/Metadata/DosHeaderTreeNode.cs @@ -41,7 +41,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + var view = Helpers.CreateListView("EntryView"); var reader = module.Reader.GetEntireImage().GetReader(0, 64); diff --git a/ILSpy/Metadata/MetadataTreeNode.cs b/ILSpy/Metadata/MetadataTreeNode.cs index bcb1d9f59..6713abc4d 100644 --- a/ILSpy/Metadata/MetadataTreeNode.cs +++ b/ILSpy/Metadata/MetadataTreeNode.cs @@ -50,7 +50,9 @@ namespace ICSharpCode.ILSpy.Metadata public override bool View(TabPageModel tabPage) { + tabPage.Title = Text.ToString(); tabPage.SupportsLanguageSwitching = false; + return false; } diff --git a/ILSpy/TextView/DecompilerTextView.cs b/ILSpy/TextView/DecompilerTextView.cs index 4640c9cd5..6caef861c 100644 --- a/ILSpy/TextView/DecompilerTextView.cs +++ b/ILSpy/TextView/DecompilerTextView.cs @@ -62,7 +62,7 @@ namespace ICSharpCode.ILSpy.TextView /// Manages the TextEditor showing the decompiled code. /// Contains all the threading logic that makes the decompiler work in the background. /// - public sealed partial class DecompilerTextView : UserControl, IDisposable + public sealed partial class DecompilerTextView : UserControl, IDisposable, IHaveState { readonly ReferenceElementGenerator referenceElementGenerator; readonly UIElementGenerator uiElementGenerator; @@ -1011,7 +1011,9 @@ namespace ICSharpCode.ILSpy.TextView state.DecompiledNodes = decompiledNodes; return state; } - + + ViewState IHaveState.GetState() => GetState(); + public void Dispose() { DisplaySettingsPanel.CurrentDisplaySettings.PropertyChanged -= CurrentDisplaySettings_PropertyChanged; diff --git a/ILSpy/ViewModels/TabPageModel.cs b/ILSpy/ViewModels/TabPageModel.cs index a83209e27..6e02c17ec 100644 --- a/ILSpy/ViewModels/TabPageModel.cs +++ b/ILSpy/ViewModels/TabPageModel.cs @@ -71,7 +71,7 @@ namespace ICSharpCode.ILSpy.ViewModels public ViewState GetState() { - return null; + return (Content as IHaveState)?.GetState(); } } @@ -79,23 +79,34 @@ namespace ICSharpCode.ILSpy.ViewModels { public static Task ShowTextViewAsync(this TabPageModel tabPage, Func> action) { - var textView = new DecompilerTextView(); - tabPage.Content = textView; + if (!(tabPage.Content is DecompilerTextView textView)) { + textView = new DecompilerTextView(); + tabPage.Content = textView; + } return action(textView); } public static Task ShowTextViewAsync(this TabPageModel tabPage, Func action) { - var textView = new DecompilerTextView(); - tabPage.Content = textView; + if (!(tabPage.Content is DecompilerTextView textView)) { + textView = new DecompilerTextView(); + tabPage.Content = textView; + } return action(textView); } public static void ShowTextView(this TabPageModel tabPage, Action action) { - var textView = new DecompilerTextView(); - tabPage.Content = textView; + if (!(tabPage.Content is DecompilerTextView textView)) { + textView = new DecompilerTextView(); + tabPage.Content = textView; + } action(textView); } } + + public interface IHaveState + { + ViewState GetState(); + } } \ No newline at end of file diff --git a/ILSpy/themes/generic.xaml b/ILSpy/themes/generic.xaml index 8bb3384fa..02e614cdb 100644 --- a/ILSpy/themes/generic.xaml +++ b/ILSpy/themes/generic.xaml @@ -26,4 +26,43 @@ Data = "M 5,5 L 10,10 L 15,5 L 5,5"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file