diff --git a/CHANGELIST.md b/CHANGELIST.md
index e885a173..ab0ac467 100644
--- a/CHANGELIST.md
+++ b/CHANGELIST.md
@@ -106,6 +106,7 @@
- Add README files for two libraries
- Simplify output name assembly logic
- Fix output name null edge case
+- Selectively rebuild program list
### 3.2.4 (2024-11-24)
diff --git a/MPF.Frontend/ViewModels/MainViewModel.cs b/MPF.Frontend/ViewModels/MainViewModel.cs
index ecf02047..ca84f4a4 100644
--- a/MPF.Frontend/ViewModels/MainViewModel.cs
+++ b/MPF.Frontend/ViewModels/MainViewModel.cs
@@ -574,7 +574,7 @@ namespace MPF.Frontend.ViewModels
_processUserInfo = processUserInfo;
// Finish initializing the rest of the values
- InitializeUIValues(removeEventHandlers: false, rescanDrives: true);
+ InitializeUIValues(removeEventHandlers: false, rebuildPrograms: true, rescanDrives: true);
}
#region Property Updates
@@ -977,7 +977,7 @@ namespace MPF.Frontend.ViewModels
// If settings were changed, reinitialize the UI
if (savedSettings)
- InitializeUIValues(removeEventHandlers: true, rescanDrives: true);
+ InitializeUIValues(removeEventHandlers: true, rebuildPrograms: true, rescanDrives: true);
}
#endregion
@@ -988,8 +988,9 @@ namespace MPF.Frontend.ViewModels
/// Performs UI value setup end to end
///
/// Whether event handlers need to be removed first
+ /// Whether the available program list should be rebuilt
/// Whether drives should be rescanned or not
- public void InitializeUIValues(bool removeEventHandlers, bool rescanDrives)
+ public void InitializeUIValues(bool removeEventHandlers, bool rebuildPrograms, bool rescanDrives)
{
// Disable the dumping button
StartStopButtonEnabled = false;
@@ -1024,7 +1025,8 @@ namespace MPF.Frontend.ViewModels
SetCurrentDiscType();
// Set the dumping program
- PopulateInternalPrograms();
+ if (rebuildPrograms)
+ PopulateInternalPrograms();
// Set the initial environment and UI values
SetSupportedDriveSpeed();
diff --git a/MPF.UI/Windows/MainWindow.xaml.cs b/MPF.UI/Windows/MainWindow.xaml.cs
index 73cd1beb..d77000bb 100644
--- a/MPF.UI/Windows/MainWindow.xaml.cs
+++ b/MPF.UI/Windows/MainWindow.xaml.cs
@@ -518,7 +518,7 @@ namespace MPF.UI.Windows
public void DriveLetterComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (MainViewModel.CanExecuteSelectionChanged)
- MainViewModel.InitializeUIValues(removeEventHandlers: true, rescanDrives: false);
+ MainViewModel.InitializeUIValues(removeEventHandlers: true, rebuildPrograms: false, rescanDrives: false);
}
///
@@ -552,7 +552,7 @@ namespace MPF.UI.Windows
/// Handler for MediaScanButton Click event
///
public void MediaScanButtonClick(object sender, RoutedEventArgs e) =>
- MainViewModel.InitializeUIValues(removeEventHandlers: true, rescanDrives: true);
+ MainViewModel.InitializeUIValues(removeEventHandlers: true, rebuildPrograms: false, rescanDrives: true);
///
/// Handler for MediaTypeComboBox SelectionChanged event
@@ -606,7 +606,7 @@ namespace MPF.UI.Windows
if (MainViewModel.Options.FastUpdateLabel)
MainViewModel.FastUpdateLabel(removeEventHandlers: true);
else
- MainViewModel.InitializeUIValues(removeEventHandlers: true, rescanDrives: false);
+ MainViewModel.InitializeUIValues(removeEventHandlers: true, rebuildPrograms: false, rescanDrives: false);
}
}