@@ -67,8 +67,8 @@ public NewProject(string unityVersion, string suggestedName, string targetFolder
6767 btnCreateNewProject . IsEnabled = true ;
6868 }
6969
70- // fill available versions
71- if ( gridAvailableVersions . ItemsSource == null )
70+ // fill available versions, only replace if it's a different collection instance
71+ if ( ! ReferenceEquals ( gridAvailableVersions . ItemsSource , MainWindow . unityInstallationsSource ) )
7272 {
7373 gridAvailableVersions . ItemsSource = MainWindow . unityInstallationsSource ;
7474 }
@@ -77,21 +77,27 @@ public NewProject(string unityVersion, string suggestedName, string targetFolder
7777 if ( MainWindow . unityInstalledVersions . ContainsKey ( unityVersion ) == true )
7878 {
7979 // find this unity version, TODO theres probably easier way than looping all
80- for ( int i = 0 ; i < MainWindow . unityInstallationsSource . Count ; i ++ )
80+ if ( MainWindow . unityInstallationsSource != null )
8181 {
82- if ( MainWindow . unityInstallationsSource [ i ] . Version == newVersion )
82+ for ( int i = 0 ; i < MainWindow . unityInstallationsSource . Count ; i ++ )
8383 {
84- gridAvailableVersions . SelectedIndex = i ;
85- gridAvailableVersions . ScrollIntoView ( gridAvailableVersions . SelectedItem ) ;
84+ if ( MainWindow . unityInstallationsSource [ i ] . Version == newVersion )
85+ {
86+ gridAvailableVersions . SelectedIndex = i ;
87+ gridAvailableVersions . ScrollIntoView ( gridAvailableVersions . SelectedItem ) ;
8688
87- string baseVersion = GetBaseVersion ( newVersion ) ;
88- if ( fetchOnlineTemplates ) _ = LoadOnlineTemplatesAsync ( baseVersion ) ;
89- break ;
89+ string baseVersion = GetBaseVersion ( newVersion ) ;
90+ if ( fetchOnlineTemplates ) _ = LoadOnlineTemplatesAsync ( baseVersion ) ;
91+ break ;
92+ }
9093 }
9194 }
9295
93- UpdateTemplatesDropDown ( ( gridAvailableVersions . SelectedItem as UnityInstallation ) . Path ) ;
94- UpdateModulesDropdown ( newVersion ) ;
96+ if ( gridAvailableVersions . SelectedItem != null )
97+ {
98+ UpdateTemplatesDropDown ( ( gridAvailableVersions . SelectedItem as UnityInstallation ) . Path ) ;
99+ UpdateModulesDropdown ( newVersion ) ;
100+ }
95101 }
96102 else // we dont have requested unity version, select first item then
97103 {
@@ -203,15 +209,18 @@ private void BtnCreateNewProject_Click(object sender, RoutedEventArgs e)
203209 else
204210 {
205211 // Use built-in template from dropdown
206- templateZipPath = ( ( KeyValuePair < string , string > ) cmbNewProjectTemplate . SelectedValue ) . Value ;
212+ if ( cmbNewProjectTemplate . SelectedValue != null ) templateZipPath = ( ( KeyValuePair < string , string > ) cmbNewProjectTemplate . SelectedValue ) . Value ;
207213 }
208214
209- selectedPlatform = cmbNewProjectPlatform . SelectedValue . ToString ( ) ;
210- UpdateSelectedVersion ( ) ;
215+ if ( cmbNewProjectTemplate . SelectedValue != null )
216+ {
217+ selectedPlatform = cmbNewProjectPlatform . SelectedValue . ToString ( ) ;
218+ UpdateSelectedVersion ( ) ;
211219
212- // save last used value for platform
213- Properties . Settings . Default . newProjectPlatform = cmbNewProjectPlatform . SelectedValue . ToString ( ) ;
214- Properties . Settings . Default . Save ( ) ;
220+ // save last used value for platform
221+ Settings . Default . newProjectPlatform = cmbNewProjectPlatform . SelectedValue . ToString ( ) ;
222+ Settings . Default . Save ( ) ;
223+ }
215224
216225 DialogResult = true ;
217226 }
0 commit comments