Skip to content

Commit 83b9569

Browse files
Show additional keybinding count if there are additional keybindings on the top-level Actions page (microsoft#19865)
On the top-level actions page, display an indicator if there are additional keybindings other than the one displayed Closes microsoft#19830
1 parent 830935d commit 83b9569

File tree

5 files changed

+71
-12
lines changed

5 files changed

+71
-12
lines changed

src/cascadia/TerminalSettingsEditor/Actions.xaml

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -164,17 +164,33 @@
164164
Style="{StaticResource KeyBindingNameTextBlockStyle}"
165165
Text="{x:Bind DisplayName, Mode=OneWay}" />
166166
<!-- Key Chord Text -->
167-
<Border Grid.Column="1"
168-
Padding="8,4,8,4"
169-
HorizontalAlignment="Right"
170-
VerticalAlignment="Center"
171-
Style="{ThemeResource KeyChordBorderStyle}"
172-
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(FirstKeyChordText)}">
173-
<TextBlock FontSize="14"
174-
Style="{ThemeResource KeyChordTextBlockStyle}"
175-
Text="{x:Bind FirstKeyChordText, Mode=OneWay}"
176-
TextWrapping="WrapWholeWords" />
177-
</Border>
167+
<Grid Grid.Column="1"
168+
HorizontalAlignment="Right"
169+
VerticalAlignment="Center"
170+
ColumnSpacing="4">
171+
<Grid.ColumnDefinitions>
172+
<ColumnDefinition Width="Auto" />
173+
<ColumnDefinition Width="Auto" />
174+
</Grid.ColumnDefinitions>
175+
<Border Grid.Column="0"
176+
Padding="8,4,8,4"
177+
Style="{ThemeResource KeyChordBorderStyle}"
178+
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(FirstKeyChordText)}">
179+
<TextBlock FontSize="14"
180+
Style="{ThemeResource KeyChordTextBlockStyle}"
181+
Text="{x:Bind FirstKeyChordText, Mode=OneWay}"
182+
TextWrapping="WrapWholeWords" />
183+
</Border>
184+
<Border Grid.Column="1"
185+
Padding="8,4,8,4"
186+
Style="{ThemeResource KeyChordBorderStyle}"
187+
ToolTipService.ToolTip="{x:Bind AdditionalKeyChordTooltipText, Mode=OneWay}"
188+
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(AdditionalKeyChordCountText)}">
189+
<TextBlock FontSize="14"
190+
Style="{ThemeResource KeyChordTextBlockStyle}"
191+
Text="{x:Bind AdditionalKeyChordCountText, Mode=OneWay}" />
192+
</Border>
193+
</Grid>
178194
</Grid>
179195
</ListViewItem>
180196
</DataTemplate>

src/cascadia/TerminalSettingsEditor/ActionsViewModel.cpp

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,13 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
137137

138138
winrt::hstring CommandViewModel::DisplayNameAndKeyChordAutomationPropName()
139139
{
140-
return DisplayName() + L", " + FirstKeyChordText();
140+
auto result = DisplayName() + L", " + FirstKeyChordText();
141+
const auto size = _KeyChordList.Size();
142+
if (size > 1)
143+
{
144+
result = result + L" " + hstring{ RS_fmt(L"Actions_AdditionalKeyChords", winrt::to_hstring(size - 1)) };
145+
}
146+
return result;
141147
}
142148

143149
winrt::hstring CommandViewModel::FirstKeyChordText()
@@ -149,6 +155,35 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
149155
return L"";
150156
}
151157

158+
winrt::hstring CommandViewModel::AdditionalKeyChordCountText()
159+
{
160+
const auto size = _KeyChordList.Size();
161+
if (size > 1)
162+
{
163+
return winrt::hstring{ L"+" + winrt::to_hstring(size - 1) };
164+
}
165+
return L"";
166+
}
167+
168+
winrt::hstring CommandViewModel::AdditionalKeyChordTooltipText()
169+
{
170+
const auto size = _KeyChordList.Size();
171+
if (size <= 1)
172+
{
173+
return L"";
174+
}
175+
std::wstring result;
176+
for (uint32_t i = 1; i < size; ++i)
177+
{
178+
if (!result.empty())
179+
{
180+
result += L"\n";
181+
}
182+
result += std::wstring_view{ _KeyChordList.GetAt(i).KeyChordText() };
183+
}
184+
return winrt::hstring{ result };
185+
}
186+
152187
winrt::hstring CommandViewModel::ID()
153188
{
154189
return _command.ID();

src/cascadia/TerminalSettingsEditor/ActionsViewModel.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
7474
winrt::hstring DisplayNameAndKeyChordAutomationPropName();
7575

7676
winrt::hstring FirstKeyChordText();
77+
winrt::hstring AdditionalKeyChordCountText();
78+
winrt::hstring AdditionalKeyChordTooltipText();
7779

7880
winrt::hstring ID();
7981
bool IsUserAction();

src/cascadia/TerminalSettingsEditor/ActionsViewModel.idl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ namespace Microsoft.Terminal.Settings.Editor
5555
// View-model specific
5656
String DisplayName { get; };
5757
String FirstKeyChordText { get; };
58+
String AdditionalKeyChordCountText { get; };
59+
String AdditionalKeyChordTooltipText { get; };
5860
String DisplayNameAndKeyChordAutomationPropName { get; };
5961

6062
// UI side (command list page)

src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1782,6 +1782,10 @@
17821782
<value>Add keybinding</value>
17831783
<comment>Button label that adds a keybinding to the current action.</comment>
17841784
</data>
1785+
<data name="Actions_AdditionalKeyChords" xml:space="preserve">
1786+
<value>and {} more</value>
1787+
<comment>Text that will be read out by a screen reader indicating that additional keybindings exist for this command. {} will be replaced by the number of additional keybindings.</comment>
1788+
</data>
17851789
<data name="Actions_DeleteConfirmationButton.Content" xml:space="preserve">
17861790
<value>Yes, delete key binding</value>
17871791
<comment>Button label that confirms deletion of a key binding entry.</comment>

0 commit comments

Comments
 (0)