Skip to content

Commit b72390e

Browse files
committed
Added DispatcherQueue dispatching for high contrast theme change
1 parent 5dfc575 commit b72390e

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

Microsoft.Toolkit.Uwp.UI/Helpers/ThemeListener.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,23 +79,26 @@ public ThemeListener(DispatcherQueue dispatcherQueue = null)
7979
}
8080
}
8181

82-
private void Accessible_HighContrastChanged(AccessibilitySettings sender, object args)
82+
private async void Accessible_HighContrastChanged(AccessibilitySettings sender, object args)
8383
{
8484
#if DEBUG
8585
System.Diagnostics.Debug.WriteLine("HighContrast Changed");
8686
#endif
8787

88-
UpdateProperties();
88+
await OnThemePropertyChangedAsync();
8989
}
9090

9191
// Note: This can get called multiple times during HighContrast switch, do we care?
9292
private async void Settings_ColorValuesChanged(UISettings sender, object args)
9393
{
94-
await OnColorValuesChanged();
94+
await OnThemePropertyChangedAsync();
9595
}
9696

97-
// Internal abstraction is used by the Unit Tests
98-
internal Task OnColorValuesChanged()
97+
/// <summary>
98+
/// Dispatches an update for the public properties and the firing of <see cref="ThemeChanged"/> on <see cref="DispatcherQueue"/>.
99+
/// </summary>
100+
/// <returns>A <see cref="Task"/> that indicates when the dispatching has completed.</returns>
101+
internal Task OnThemePropertyChangedAsync()
99102
{
100103
// Getting called off thread, so we need to dispatch to request value.
101104
return DispatcherQueue.EnqueueAsync(

UnitTests/UnitTests.XamlIslands.UWPApp/XamlIslandsTest_ThemeListener_Threading.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public Task Init()
3939
[TestMethod]
4040
public async Task ThemeListenerDispatcherTestAsync()
4141
{
42-
await _themeListener.OnColorValuesChanged();
42+
await _themeListener.OnThemePropertyChangedAsync();
4343

4444
await _taskCompletionSource.Task;
4545
}
@@ -49,7 +49,7 @@ public async Task ThemeListenerDispatcherTestFromOtherThreadAsync()
4949
{
5050
await Task.Run(async () =>
5151
{
52-
await _themeListener.OnColorValuesChanged();
52+
await _themeListener.OnThemePropertyChangedAsync();
5353
});
5454
await _taskCompletionSource.Task;
5555
}

0 commit comments

Comments
 (0)