From 950efaf0d34c68a8a3a2c483b915946921b85438 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Sun, 13 Jul 2025 20:05:25 +0200 Subject: [PATCH 1/7] SearchBar does not update colors on theme change - fix --- src/Controls/src/Core/SearchBar/SearchBar.cs | 23 +++++++ .../android/SearchbarColorsShouldUpdate.png | Bin 0 -> 37755 bytes .../TestCases.HostApp/Issues/Issue30601.cs | 41 ++++++++++++ .../Tests/Issues/Issue30601.cs | 23 +++++++ .../windows/SearchbarColorsShouldUpdate.png | Bin 0 -> 12903 bytes .../SearchBar/SearchBarHandler.Android.cs | 1 + .../Platform/Android/SearchViewExtensions.cs | 60 ++++++++++++++---- 7 files changed, 136 insertions(+), 12 deletions(-) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchbarColorsShouldUpdate.png create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue30601.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs create mode 100644 src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/SearchbarColorsShouldUpdate.png diff --git a/src/Controls/src/Core/SearchBar/SearchBar.cs b/src/Controls/src/Core/SearchBar/SearchBar.cs index 18837b845b89..c62bc03779d9 100644 --- a/src/Controls/src/Core/SearchBar/SearchBar.cs +++ b/src/Controls/src/Core/SearchBar/SearchBar.cs @@ -3,6 +3,7 @@ using System.ComponentModel; using System.Diagnostics; using System.Windows.Input; +using Microsoft.Maui.ApplicationModel; using Microsoft.Maui.Controls.Internals; using Microsoft.Maui.Graphics; @@ -115,6 +116,28 @@ public SearchBar() _platformConfigurationRegistry = new Lazy>(() => new PlatformConfigurationRegistry(this)); } + private protected override void OnHandlerChangingCore(HandlerChangingEventArgs args) + { + base.OnHandlerChangingCore(args); + + if (Application.Current == null) + return; + + if (args.NewHandler == null || args.OldHandler is not null) + Application.Current.RequestedThemeChanged -= OnRequestedThemeChanged; + + + if (args.NewHandler != null && args.OldHandler == null) + Application.Current.RequestedThemeChanged += OnRequestedThemeChanged; + } + + private void OnRequestedThemeChanged(object sender, AppThemeChangedEventArgs e) + { + OnPropertyChanged(nameof(PlaceholderColor)); + OnPropertyChanged(nameof(TextColor)); + OnPropertyChanged(nameof(CancelButtonColor)); + } + ICommand ICommandElement.Command => SearchCommand; object ICommandElement.CommandParameter => SearchCommandParameter; diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchbarColorsShouldUpdate.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchbarColorsShouldUpdate.png new file mode 100644 index 0000000000000000000000000000000000000000..fff5a5e12649b98f8dab1c304a4d9154287562ab GIT binary patch literal 37755 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

0Mir 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 + { + Application.Current!.UserAppTheme = Application.Current!.UserAppTheme != AppTheme.Dark ? AppTheme.Dark : AppTheme.Light; + }) + } + } + }; + } +} \ No newline at end of file diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs new file mode 100644 index 000000000000..8e84baeebb7e --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs @@ -0,0 +1,23 @@ +#if TEST_FAILS_ON_CATALYST || TEST_FAILS_ON_IOS // There's a separate PR for this issue on iOS and Catalyst https://github.com/dotnet/maui/pull/30597 +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues; + +public class Issue30601 : _IssuesUITest +{ + public Issue30601(TestDevice testDevice) : base(testDevice) { } + + public override string Issue => "[Android] SearchBar does not update colors on theme change"; + + [Test] + [Category(UITestCategories.SearchBar)] + public void SearchbarColorsShouldUpdate() + { + App.WaitForElement("changeThemeButton"); + App.Tap("changeThemeButton"); + VerifyScreenshot(); + } +} +#endif \ No newline at end of file diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/SearchbarColorsShouldUpdate.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/SearchbarColorsShouldUpdate.png new file mode 100644 index 0000000000000000000000000000000000000000..df6bf62b627f9822f47f4bbdd02a3f6bacb9a343 GIT binary patch literal 12903 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 literal 0 HcmV?d00001 diff --git a/src/Core/src/Handlers/SearchBar/SearchBarHandler.Android.cs b/src/Core/src/Handlers/SearchBar/SearchBarHandler.Android.cs index e04b145e7c84..aef4b346caf2 100644 --- a/src/Core/src/Handlers/SearchBar/SearchBarHandler.Android.cs +++ b/src/Core/src/Handlers/SearchBar/SearchBarHandler.Android.cs @@ -112,6 +112,7 @@ public static void MapCharacterSpacing(ISearchBarHandler handler, ISearchBar sea public static void MapTextColor(ISearchBarHandler handler, ISearchBar searchBar) { handler.QueryEditor?.UpdateTextColor(searchBar); + handler.PlatformView?.UpdateTextColor(searchBar); } public static void MapIsTextPredictionEnabled(ISearchBarHandler handler, ISearchBar searchBar) diff --git a/src/Core/src/Platform/Android/SearchViewExtensions.cs b/src/Core/src/Platform/Android/SearchViewExtensions.cs index cdfe739f80bc..e4b131cac97d 100644 --- a/src/Core/src/Platform/Android/SearchViewExtensions.cs +++ b/src/Core/src/Platform/Android/SearchViewExtensions.cs @@ -1,6 +1,11 @@ -using Android.Content.Res; +using System; +using Android.Content.Res; +using Android.Graphics; +using Android.Graphics.Drawables; using Android.Text; +using Android.Util; using Android.Widget; +using static Android.Content.Res.Resources; using SearchView = AndroidX.AppCompat.Widget.SearchView; namespace Microsoft.Maui.Platform @@ -21,24 +26,46 @@ public static void UpdatePlaceholderColor(this SearchView searchView, ISearchBar { editText ??= searchView.GetFirstChildOfType(); - if (editText == null) + if (editText is null) return; - var placeholderTextColor = searchBar.PlaceholderColor; - - if (placeholderTextColor == null) + if (searchBar?.PlaceholderColor is Graphics.Color placeholderTextColor) { - editText.SetHintTextColor(defaultPlaceholderColor); + if (PlatformInterop.CreateEditTextColorStateList(editText.HintTextColors, placeholderTextColor.ToPlatform()) is ColorStateList c) + { + editText.SetHintTextColor(c); + } } else { - if (PlatformInterop.CreateEditTextColorStateList(editText.HintTextColors, placeholderTextColor.ToPlatform()) is ColorStateList c) + var typedValue = new TypedValue(); + if (OperatingSystem.IsAndroidVersionAtLeast(23) && + searchView.Context?.Theme is Theme theme && + theme.ResolveAttribute(Android.Resource.Attribute.TextColorHint, typedValue, true) && + editText.Resources?.GetColor(typedValue.ResourceId, theme) is Color textColorHint) { - editText.SetHintTextColor(c); + editText.SetHintTextColor(textColorHint); } } } + internal static void UpdateTextColor(this SearchView searchView, ITextStyle entry) + { + var typedValue = new TypedValue(); + if (OperatingSystem.IsAndroidVersionAtLeast(23) && + searchView.GetFirstChildOfType() is EditText editText && + editText.Context?.Theme is Theme theme && + theme.ResolveAttribute(Android.Resource.Attribute.TextColorPrimary, typedValue, true) && + editText.Resources?.GetColor(typedValue.ResourceId, theme) is Color color) + { + if (entry.TextColor is null) + editText.SetTextColor(color); + + var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); + searchMagIconImage?.Drawable?.SetTint(color); + } + } + public static void UpdateFont(this SearchView searchView, ISearchBar searchBar, IFontManager fontManager, EditText? editText = null) { editText ??= searchView.GetFirstChildOfType(); @@ -108,12 +135,21 @@ public static void UpdateCancelButtonColor(this SearchView searchView, ISearchBa { var image = searchView.FindViewById(searchCloseButtonIdentifier); - if (image != null && image.Drawable != null) + if (image is not null && image.Drawable is Drawable drawable) { - if (searchBar.CancelButtonColor != null) - image.Drawable.SetColorFilter(searchBar.CancelButtonColor, FilterMode.SrcIn); + if (searchBar.CancelButtonColor is not null) + drawable.SetColorFilter(searchBar.CancelButtonColor, FilterMode.SrcIn); else - image.Drawable.ClearColorFilter(); + { + var typedValue = new TypedValue(); + if (OperatingSystem.IsAndroidVersionAtLeast(23) && + image.Context?.Theme is Theme theme && + theme.ResolveAttribute(Android.Resource.Attribute.TextColorPrimary, typedValue, true) && + image.Resources?.GetColor(typedValue.ResourceId, theme) is Color imageColor) + { + drawable.SetColorFilter(imageColor, FilterMode.SrcIn); + } + } } } } From 202f497f34a29a9cfa22ad44a0a659ef7672cda7 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Thu, 28 Aug 2025 18:47:03 +0200 Subject: [PATCH 2/7] Update SearchViewExtensions.cs --- .../Platform/Android/SearchViewExtensions.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Core/src/Platform/Android/SearchViewExtensions.cs b/src/Core/src/Platform/Android/SearchViewExtensions.cs index e4b131cac97d..bd2200aeb75d 100644 --- a/src/Core/src/Platform/Android/SearchViewExtensions.cs +++ b/src/Core/src/Platform/Android/SearchViewExtensions.cs @@ -139,15 +139,18 @@ public static void UpdateCancelButtonColor(this SearchView searchView, ISearchBa { if (searchBar.CancelButtonColor is not null) drawable.SetColorFilter(searchBar.CancelButtonColor, FilterMode.SrcIn); - else + else if (OperatingSystem.IsAndroidVersionAtLeast(23) && image.Context?.Theme is Theme theme) { - var typedValue = new TypedValue(); - if (OperatingSystem.IsAndroidVersionAtLeast(23) && - image.Context?.Theme is Theme theme && - theme.ResolveAttribute(Android.Resource.Attribute.TextColorPrimary, typedValue, true) && - image.Resources?.GetColor(typedValue.ResourceId, theme) is Color imageColor) + using var ta = theme.ObtainStyledAttributes([Android.Resource.Attribute.TextColorPrimary]); + var cs = ta.GetColorStateList(0); + + if (cs is not null) { - drawable.SetColorFilter(imageColor, FilterMode.SrcIn); + int[] DisabledState = [-Android.Resource.Attribute.StateEnabled]; + int[] EnabledState = [Android.Resource.Attribute.StateEnabled]; + var state = image.Enabled ? EnabledState : DisabledState; + var color = new Color(cs.GetColorForState(state, Color.Black)); + drawable.SetColorFilter(color, FilterMode.SrcIn); } } } From 8893f07a58cc8e9aecba23e4e6cae719efc3f4de Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Thu, 28 Aug 2025 18:57:23 +0200 Subject: [PATCH 3/7] Update SearchViewExtensions.cs --- .../Platform/Android/SearchViewExtensions.cs | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/Core/src/Platform/Android/SearchViewExtensions.cs b/src/Core/src/Platform/Android/SearchViewExtensions.cs index bd2200aeb75d..f982fb131b33 100644 --- a/src/Core/src/Platform/Android/SearchViewExtensions.cs +++ b/src/Core/src/Platform/Android/SearchViewExtensions.cs @@ -38,31 +38,50 @@ public static void UpdatePlaceholderColor(this SearchView searchView, ISearchBar } else { - var typedValue = new TypedValue(); if (OperatingSystem.IsAndroidVersionAtLeast(23) && - searchView.Context?.Theme is Theme theme && - theme.ResolveAttribute(Android.Resource.Attribute.TextColorHint, typedValue, true) && - editText.Resources?.GetColor(typedValue.ResourceId, theme) is Color textColorHint) + searchView.Context?.Theme is Theme theme) { - editText.SetHintTextColor(textColorHint); + using var ta = theme.ObtainStyledAttributes([Android.Resource.Attribute.TextColorPrimary]); + var cs = ta.GetColorStateList(0); + + if (cs is not null) + { + int[] DisabledState = [-Android.Resource.Attribute.StateEnabled]; + int[] EnabledState = [Android.Resource.Attribute.StateEnabled]; + var state = searchView.Enabled ? EnabledState : DisabledState; + var color = new Color(cs.GetColorForState(state, Color.Black)); + + editText.SetTextColor(color); + + var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); + searchMagIconImage?.Drawable?.SetTint(color); + } } } } internal static void UpdateTextColor(this SearchView searchView, ITextStyle entry) { - var typedValue = new TypedValue(); if (OperatingSystem.IsAndroidVersionAtLeast(23) && searchView.GetFirstChildOfType() is EditText editText && - editText.Context?.Theme is Theme theme && - theme.ResolveAttribute(Android.Resource.Attribute.TextColorPrimary, typedValue, true) && - editText.Resources?.GetColor(typedValue.ResourceId, theme) is Color color) + editText.Context?.Theme is Theme theme) { - if (entry.TextColor is null) - editText.SetTextColor(color); + using var ta = theme.ObtainStyledAttributes([Android.Resource.Attribute.TextColorPrimary]); + var cs = ta.GetColorStateList(0); - var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); - searchMagIconImage?.Drawable?.SetTint(color); + if (cs is not null) + { + int[] DisabledState = [-Android.Resource.Attribute.StateEnabled]; + int[] EnabledState = [Android.Resource.Attribute.StateEnabled]; + var state = searchView.Enabled ? EnabledState : DisabledState; + var color = new Color(cs.GetColorForState(state, Color.Black)); + + if (entry.TextColor is null) + editText.SetTextColor(color); + + var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); + searchMagIconImage?.Drawable?.SetTint(color); + } } } From 8363b94bac9e8a425ec4a5999cb74e639bd2bd95 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Thu, 28 Aug 2025 19:14:22 +0200 Subject: [PATCH 4/7] Update SearchViewExtensions.cs --- .../Platform/Android/SearchViewExtensions.cs | 86 ++++++++----------- 1 file changed, 35 insertions(+), 51 deletions(-) diff --git a/src/Core/src/Platform/Android/SearchViewExtensions.cs b/src/Core/src/Platform/Android/SearchViewExtensions.cs index f982fb131b33..3683f7b37f8c 100644 --- a/src/Core/src/Platform/Android/SearchViewExtensions.cs +++ b/src/Core/src/Platform/Android/SearchViewExtensions.cs @@ -36,52 +36,25 @@ public static void UpdatePlaceholderColor(this SearchView searchView, ISearchBar editText.SetHintTextColor(c); } } - else + else if (TryGetDefaultStateColor(searchView, Android.Resource.Attribute.TextColorHint, out var color)) { - if (OperatingSystem.IsAndroidVersionAtLeast(23) && - searchView.Context?.Theme is Theme theme) - { - using var ta = theme.ObtainStyledAttributes([Android.Resource.Attribute.TextColorPrimary]); - var cs = ta.GetColorStateList(0); - - if (cs is not null) - { - int[] DisabledState = [-Android.Resource.Attribute.StateEnabled]; - int[] EnabledState = [Android.Resource.Attribute.StateEnabled]; - var state = searchView.Enabled ? EnabledState : DisabledState; - var color = new Color(cs.GetColorForState(state, Color.Black)); + editText.SetHintTextColor(color); - editText.SetTextColor(color); - - var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); - searchMagIconImage?.Drawable?.SetTint(color); - } - } + var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); + searchMagIconImage?.Drawable?.SetTint(color); } } internal static void UpdateTextColor(this SearchView searchView, ITextStyle entry) { - if (OperatingSystem.IsAndroidVersionAtLeast(23) && - searchView.GetFirstChildOfType() is EditText editText && - editText.Context?.Theme is Theme theme) + if (TryGetDefaultStateColor(searchView, Android.Resource.Attribute.TextColorPrimary, out var color) && + searchView.GetFirstChildOfType() is EditText editText) { - using var ta = theme.ObtainStyledAttributes([Android.Resource.Attribute.TextColorPrimary]); - var cs = ta.GetColorStateList(0); + if (entry.TextColor is null) + editText.SetTextColor(color); - if (cs is not null) - { - int[] DisabledState = [-Android.Resource.Attribute.StateEnabled]; - int[] EnabledState = [Android.Resource.Attribute.StateEnabled]; - var state = searchView.Enabled ? EnabledState : DisabledState; - var color = new Color(cs.GetColorForState(state, Color.Black)); - - if (entry.TextColor is null) - editText.SetTextColor(color); - - var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); - searchMagIconImage?.Drawable?.SetTint(color); - } + var searchMagIconImage = searchView.FindViewById(Resource.Id.search_mag_icon); + searchMagIconImage?.Drawable?.SetTint(color); } } @@ -158,20 +131,8 @@ public static void UpdateCancelButtonColor(this SearchView searchView, ISearchBa { if (searchBar.CancelButtonColor is not null) drawable.SetColorFilter(searchBar.CancelButtonColor, FilterMode.SrcIn); - else if (OperatingSystem.IsAndroidVersionAtLeast(23) && image.Context?.Theme is Theme theme) - { - using var ta = theme.ObtainStyledAttributes([Android.Resource.Attribute.TextColorPrimary]); - var cs = ta.GetColorStateList(0); - - if (cs is not null) - { - int[] DisabledState = [-Android.Resource.Attribute.StateEnabled]; - int[] EnabledState = [Android.Resource.Attribute.StateEnabled]; - var state = image.Enabled ? EnabledState : DisabledState; - var color = new Color(cs.GetColorForState(state, Color.Black)); - drawable.SetColorFilter(color, FilterMode.SrcIn); - } - } + else if (TryGetDefaultStateColor(searchView,Android.Resource.Attribute.TextColorPrimary, out var color)) + drawable.SetColorFilter(color, FilterMode.SrcIn); } } } @@ -229,5 +190,28 @@ internal static void SetInputType(this SearchView searchView, ISearchBar searchB editText.SetInputType(searchBar); } + + static bool TryGetDefaultStateColor(SearchView searchView, int attribute, out Color color) + { + color = default; + + if (!OperatingSystem.IsAndroidVersionAtLeast(23)) + return false; + + if (searchView.Context?.Theme is not Theme theme) + return false; + + int[] s_disabledState = [-Android.Resource.Attribute.StateEnabled]; + int[] s_enabledState = [Android.Resource.Attribute.StateEnabled]; + + using var ta = theme.ObtainStyledAttributes([attribute]); + var cs = ta.GetColorStateList(0); + if (cs is null) + return false; + + var state = searchView.Enabled ? s_enabledState : s_disabledState; + color = new Color(cs.GetColorForState(state, Color.Black)); + return true; + } } } \ No newline at end of file From 6016809e9a64d4e451634e52782e5633324ffeb7 Mon Sep 17 00:00:00 2001 From: Gerald Versluis Date: Fri, 29 Aug 2025 10:21:24 +0200 Subject: [PATCH 5/7] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/Controls/src/Core/SearchBar/SearchBar.cs | 2 -- .../tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs | 4 +--- src/Core/src/Platform/Android/SearchViewExtensions.cs | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Controls/src/Core/SearchBar/SearchBar.cs b/src/Controls/src/Core/SearchBar/SearchBar.cs index c62bc03779d9..fbb593264ab2 100644 --- a/src/Controls/src/Core/SearchBar/SearchBar.cs +++ b/src/Controls/src/Core/SearchBar/SearchBar.cs @@ -125,8 +125,6 @@ private protected override void OnHandlerChangingCore(HandlerChangingEventArgs a if (args.NewHandler == null || args.OldHandler is not null) Application.Current.RequestedThemeChanged -= OnRequestedThemeChanged; - - if (args.NewHandler != null && args.OldHandler == null) Application.Current.RequestedThemeChanged += OnRequestedThemeChanged; } diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs index 8e84baeebb7e..1b892162da00 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30601.cs @@ -1,4 +1,3 @@ -#if TEST_FAILS_ON_CATALYST || TEST_FAILS_ON_IOS // There's a separate PR for this issue on iOS and Catalyst https://github.com/dotnet/maui/pull/30597 using NUnit.Framework; using UITest.Appium; using UITest.Core; @@ -19,5 +18,4 @@ public void SearchbarColorsShouldUpdate() App.Tap("changeThemeButton"); VerifyScreenshot(); } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/src/Core/src/Platform/Android/SearchViewExtensions.cs b/src/Core/src/Platform/Android/SearchViewExtensions.cs index 3683f7b37f8c..5308599fab4c 100644 --- a/src/Core/src/Platform/Android/SearchViewExtensions.cs +++ b/src/Core/src/Platform/Android/SearchViewExtensions.cs @@ -131,7 +131,7 @@ public static void UpdateCancelButtonColor(this SearchView searchView, ISearchBa { if (searchBar.CancelButtonColor is not null) drawable.SetColorFilter(searchBar.CancelButtonColor, FilterMode.SrcIn); - else if (TryGetDefaultStateColor(searchView,Android.Resource.Attribute.TextColorPrimary, out var color)) + else if (TryGetDefaultStateColor(searchView, Android.Resource.Attribute.TextColorPrimary, out var color)) drawable.SetColorFilter(color, FilterMode.SrcIn); } } From e3bf11d47f65241ab819b0a393897c38fec61eab Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Fri, 29 Aug 2025 15:13:34 +0200 Subject: [PATCH 6/7] Updated snapshots --- ...esAndPlaceholderText_VerifyVisualState.png | Bin 44855 -> 44019 bytes ...FamilyAndPlaceholder_VerifyVisualState.png | Bin 42392 -> 41907 bytes ...ntSizeAndPlaceholder_VerifyVisualState.png | Bin 45673 -> 44872 bytes ...gnmentAndPlaceholder_VerifyVisualState.png | Bin 43658 -> 43018 bytes ...rAndCharacterSpacing_VerifyVisualState.png | Bin 43719 -> 43083 bytes ...erticalTextAlignment_VerifyVisualState.png | Bin 43587 -> 42943 bytes .../mac/SearchbarColorsShouldUpdate.png | Bin 0 -> 18323 bytes .../ios/SearchbarColorsShouldUpdate.png | Bin 0 -> 42936 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/SearchbarColorsShouldUpdate.png create mode 100644 src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/SearchbarColorsShouldUpdate.png diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchBar_SetFontAttributesAndPlaceholderText_VerifyVisualState.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchBar_SetFontAttributesAndPlaceholderText_VerifyVisualState.png index 4997ea3e7160be08fd1558921c1a0a0ede1bd15d..61e9336026325e9670e0655318de8ba44bd37d53 100644 GIT binary patch literal 44019 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