Skip to content

Commit 609b244

Browse files
committed
new project: handle null installation list, update list if installs have changed, fixes #219
1 parent 07c7c6f commit 609b244

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

UnityLauncherPro/NewProject.xaml.cs

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)