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;