diff --git a/functions/private/Initialize-WinUtilTabContent.ps1 b/functions/private/Initialize-WinUtilTabContent.ps1 index 3394a8f2..3f1881bc 100644 --- a/functions/private/Initialize-WinUtilTabContent.ps1 +++ b/functions/private/Initialize-WinUtilTabContent.ps1 @@ -36,4 +36,7 @@ function Initialize-WinUtilTabContent { } $sync.InitializedTabs[$TabName] = $true + + # Sync freshly built controls to any selections already in $sync.selected* (import/preset). + Reset-WPFCheckBoxes -doToggles $true } diff --git a/pester/lazy-tabs.Tests.ps1 b/pester/lazy-tabs.Tests.ps1 index 1593fbd6..2544db83 100644 --- a/pester/lazy-tabs.Tests.ps1 +++ b/pester/lazy-tabs.Tests.ps1 @@ -12,6 +12,7 @@ BeforeAll { param([string]$TargetGridName) } function Invoke-WinUtilISOCheckExistingWork { } + function Reset-WPFCheckBoxes { param([bool]$doToggles) } . (Join-Path $script:repoRoot "functions\private\Initialize-WinUtilTabContent.ps1") } @@ -29,6 +30,7 @@ Describe "Initialize-WinUtilTabContent" { Mock Invoke-WPFUIElements { } Mock Initialize-WPFUI { } + Mock Reset-WPFCheckBoxes { } } AfterEach { @@ -51,6 +53,21 @@ Describe "Initialize-WinUtilTabContent" { $script:sync.InitializedTabs["Install"] | Should -BeTrue } + It "re-applies checkbox selections after building a tab's controls" { + Initialize-WinUtilTabContent -TabName "Tweaks" + + Should -Invoke -CommandName Reset-WPFCheckBoxes -Times 1 -Exactly -ParameterFilter { + $doToggles -eq $true + } + } + + It "does not re-apply checkbox selections on a tab that's already built" { + Initialize-WinUtilTabContent -TabName "Tweaks" + Initialize-WinUtilTabContent -TabName "Tweaks" + + Should -Invoke -CommandName Reset-WPFCheckBoxes -Times 1 -Exactly + } + It "initializes deferred config-backed tabs once" { Initialize-WinUtilTabContent -TabName "Tweaks" Initialize-WinUtilTabContent -TabName "Config"