From d27594c4f71668ab7512e11f29a707a7873bcefa Mon Sep 17 00:00:00 2001
From: Kai Tao <69313318+vanzue@users.noreply.github.com>
Date: Wed, 1 Apr 2026 16:29:53 +0800
Subject: [PATCH] Settings: Fix settings arrow render (#46454)
## Summary of the Pull Request
Existing:
A box icon for whatever up, down, left, right, they are not treated as
Glyph icon rendered, instead as normal text
## PR Checklist
- [ ] Closes: #xxx
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
- [ ] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: #xxx
## Detailed Description of the Pull Request / Additional comments
## Validation Steps Performed
---
.../Controls/KeyVisual/KeyVisual.xaml.cs | 24 +++++++++++++++----
.../ShortcutControl/ShortcutControl.xaml | 3 ++-
.../ShortcutDialogContentControl.xaml | 3 ++-
3 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/common/Common.UI.Controls/Controls/KeyVisual/KeyVisual.xaml.cs b/src/common/Common.UI.Controls/Controls/KeyVisual/KeyVisual.xaml.cs
index 1439a6e1d9..eebf7a6565 100644
--- a/src/common/Common.UI.Controls/Controls/KeyVisual/KeyVisual.xaml.cs
+++ b/src/common/Common.UI.Controls/Controls/KeyVisual/KeyVisual.xaml.cs
@@ -105,6 +105,22 @@ namespace Microsoft.PowerToys.Common.UI.Controls
{
switch (key)
{
+ case nameof(VirtualKey.Up):
+ SetGlyphOrText("\uE0E4", VirtualKey.Up);
+ break;
+
+ case nameof(VirtualKey.Down):
+ SetGlyphOrText("\uE0E5", VirtualKey.Down);
+ break;
+
+ case nameof(VirtualKey.Left):
+ SetGlyphOrText("\uE0E2", VirtualKey.Left);
+ break;
+
+ case nameof(VirtualKey.Right):
+ SetGlyphOrText("\uE0E3", VirtualKey.Right);
+ break;
+
case "Copilot":
_keyPresenter.Style = (Style)Application.Current.Resources["CopilotKeyCharPresenterStyle"];
break;
@@ -141,19 +157,19 @@ namespace Microsoft.PowerToys.Common.UI.Controls
break;
case VirtualKey.Up:
- _keyPresenter.Content = "\uE0E4";
+ SetGlyphOrText("\uE0E4", virtualKey);
break;
case VirtualKey.Down:
- _keyPresenter.Content = "\uE0E5";
+ SetGlyphOrText("\uE0E5", virtualKey);
break;
case VirtualKey.Left:
- _keyPresenter.Content = "\uE0E2";
+ SetGlyphOrText("\uE0E2", virtualKey);
break;
case VirtualKey.Right:
- _keyPresenter.Content = "\uE0E3";
+ SetGlyphOrText("\uE0E3", virtualKey);
break;
case VirtualKey.LeftWindows:
diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml
index 585af5c38b..5900e0615b 100644
--- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml
+++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml
@@ -46,6 +46,7 @@
Content="{Binding}"
CornerRadius="{StaticResource ControlCornerRadius}"
IsTabStop="False"
+ RenderKeyAsGlyph="True"
State="{Binding ElementName=LayoutRoot, Path=KeyVisualShouldShowConflict, Mode=OneWay, Converter={StaticResource BoolToKeyVisualStateConverter}, ConverterParameter=Warning}"
Style="{StaticResource AccentKeyVisualStyle}" />
@@ -96,4 +97,4 @@
-
\ No newline at end of file
+
diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml
index ce4274ac1d..384b4b63f4 100644
--- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml
+++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml
@@ -236,6 +236,7 @@
FontSize="16"
FontWeight="SemiBold"
IsTabStop="False"
+ RenderKeyAsGlyph="True"
State="{Binding ElementName=ShortcutContentControl, Path=IsError, Mode=OneWay, Converter={StaticResource BoolToKeyVisualStateConverter}, ConverterParameter=Error}"
Style="{StaticResource AccentKeyVisualStyle}" />
@@ -332,4 +333,4 @@
-
\ No newline at end of file
+