Skip to content

Commit 1ab802b

Browse files
committed
Escape the ampersand character on Windows platform for ControlSchemesMenu
1 parent b79406e commit 1ab802b

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

Packages/com.unity.inputsystem/InputSystem/Editor/UITKAssetEditor/Views/InputActionsEditorView.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,18 @@ public override void RedrawUI(ViewState viewState)
138138
m_SaveButton.SetEnabled(InputEditorUserSettings.autoSaveInputActionAssets == false);
139139
}
140140

141+
private string SetupControlSchemeName(string name)
142+
{
143+
//On Windows the '&' is considered an accelerator character and will always be stripped.
144+
//Since the ControlScheme menu isn't creating hotkeys, it can be safely assumed that they are meant to be text
145+
//so we want to escape the character for MenuItem
146+
if (Application.platform == RuntimePlatform.WindowsEditor)
147+
{
148+
name = name.Replace("&", "&&");
149+
}
150+
return name;
151+
}
152+
141153
private void SetUpControlSchemesMenu(ViewState viewState)
142154
{
143155
m_ControlSchemesToolbar.menu.MenuItems().Clear();
@@ -151,7 +163,7 @@ private void SetUpControlSchemesMenu(ViewState viewState)
151163
m_ControlSchemesToolbar.menu.AppendAction("All Control Schemes", _ => SelectControlScheme(-1),
152164
viewState.selectedControlSchemeIndex == -1 ? DropdownMenuAction.Status.Checked : DropdownMenuAction.Status.Normal);
153165
viewState.controlSchemes.ForEach((scheme, i) =>
154-
m_ControlSchemesToolbar.menu.AppendAction(scheme.name, _ => SelectControlScheme(i),
166+
m_ControlSchemesToolbar.menu.AppendAction(SetupControlSchemeName(scheme.name), _ => SelectControlScheme(i),
155167
viewState.selectedControlSchemeIndex == i ? DropdownMenuAction.Status.Checked : DropdownMenuAction.Status.Normal));
156168
m_ControlSchemesToolbar.menu.AppendSeparator();
157169
}

0 commit comments

Comments
 (0)