From 33da657a5845d768085999b0b13a7444e4da8608 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer <siegfriedpammer@gmail.com> Date: Mon, 27 Nov 2017 16:39:33 +0100 Subject: [PATCH] UI Optimization: Open last selected tree node, after tree is initialized --- ILSpy/MainWindow.xaml.cs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index f4fad536e..43536dbf3 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -328,30 +328,28 @@ namespace ICSharpCode.ILSpy } void MainWindow_Loaded(object sender, RoutedEventArgs e) - { - - Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(InitializeAssemblyListAndOpenAssemblies)); - } - - void InitializeAssemblyListAndOpenAssemblies() { ILSpySettings spySettings = this.spySettings; this.spySettings = null; - + // Load AssemblyList only in Loaded event so that WPF is initialized before we start the CPU-heavy stuff. // This makes the UI come up a bit faster. this.assemblyList = assemblyListManager.LoadList(spySettings, sessionSettings.ActiveAssemblyList); - + HandleCommandLineArguments(App.CommandLineArguments); - + if (assemblyList.GetAssemblies().Length == 0 - && assemblyList.ListName == AssemblyListManager.DefaultListName) - { + && assemblyList.ListName == AssemblyListManager.DefaultListName) { LoadInitialAssemblies(); } - + ShowAssemblyList(this.assemblyList); - + + Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() => OpenAssemblies(spySettings))); + } + + void OpenAssemblies(ILSpySettings spySettings) + { HandleCommandLineArgumentsAfterShowList(App.CommandLineArguments); if (App.CommandLineArguments.NavigateTo == null && App.CommandLineArguments.AssembliesToLoad.Count != 1) { SharpTreeNode node = null;