fix: apply imported config selections to lazily-built tabs (#4938)

Tabs other than Install build their checkboxes lazily on first visit.
Import populates $sync.selected* and calls Reset-WPFCheckBoxes, but
that only touches checkboxes that already exist in $sync, so any tab
not yet visited gets its controls built later with default (unchecked)
state and never reflects the import. Re-apply Reset-WPFCheckBoxes right
after a tab's controls are built so it picks up existing selections.
This commit is contained in:
Vinicius Costa Amorim
2026-08-09 12:59:13 -05:00
committed by GitHub
parent 8fb078da4c
commit 8860caf357
2 changed files with 20 additions and 0 deletions
@@ -36,4 +36,7 @@ function Initialize-WinUtilTabContent {
} }
$sync.InitializedTabs[$TabName] = $true $sync.InitializedTabs[$TabName] = $true
# Sync freshly built controls to any selections already in $sync.selected* (import/preset).
Reset-WPFCheckBoxes -doToggles $true
} }
+17
View File
@@ -12,6 +12,7 @@ BeforeAll {
param([string]$TargetGridName) param([string]$TargetGridName)
} }
function Invoke-WinUtilISOCheckExistingWork { } function Invoke-WinUtilISOCheckExistingWork { }
function Reset-WPFCheckBoxes { param([bool]$doToggles) }
. (Join-Path $script:repoRoot "functions\private\Initialize-WinUtilTabContent.ps1") . (Join-Path $script:repoRoot "functions\private\Initialize-WinUtilTabContent.ps1")
} }
@@ -29,6 +30,7 @@ Describe "Initialize-WinUtilTabContent" {
Mock Invoke-WPFUIElements { } Mock Invoke-WPFUIElements { }
Mock Initialize-WPFUI { } Mock Initialize-WPFUI { }
Mock Reset-WPFCheckBoxes { }
} }
AfterEach { AfterEach {
@@ -51,6 +53,21 @@ Describe "Initialize-WinUtilTabContent" {
$script:sync.InitializedTabs["Install"] | Should -BeTrue $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" { It "initializes deferred config-backed tabs once" {
Initialize-WinUtilTabContent -TabName "Tweaks" Initialize-WinUtilTabContent -TabName "Tweaks"
Initialize-WinUtilTabContent -TabName "Config" Initialize-WinUtilTabContent -TabName "Config"