Skip to content

Commit 1ddc45e

Browse files
committed
PRE-MERGE #19519 Implement search in Settings UI
2 parents ceb291d + 20bdc21 commit 1ddc45e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1837
-248
lines changed

.github/actions/spelling/allow/allow.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ sustainability
7171
sxn
7272
Tencent
7373
toolset
74+
Uids
7475
UEFI
76+
UIDs
7577
uiatextrange
7678
und
7779
vsdevcmd

src/cascadia/TerminalSettingsEditor/Actions.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "pch.h"
55
#include "Actions.h"
66
#include "Actions.g.cpp"
7+
#include "NavigateToPageArgs.g.h"
78
#include "LibraryResources.h"
89
#include "../TerminalSettingsModel/AllShortcutActions.h"
910

@@ -21,7 +22,8 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
2122

2223
void Actions::OnNavigatedTo(const NavigationEventArgs& e)
2324
{
24-
_ViewModel = e.Parameter().as<Editor::ActionsViewModel>();
25+
const auto args = e.Parameter().as<Editor::NavigateToPageArgs>();
26+
_ViewModel = args.ViewModel().as<Editor::ActionsViewModel>();
2527
_ViewModel.CurrentPage(ActionsSubPage::Base);
2628
auto vmImpl = get_self<ActionsViewModel>(_ViewModel);
2729
vmImpl->MarkAsVisited();

src/cascadia/TerminalSettingsEditor/AddProfile.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
2929
void AddProfile::OnNavigatedTo(const NavigationEventArgs& e)
3030
{
3131
_State = e.Parameter().as<Editor::AddProfilePageNavigationState>();
32+
BringIntoViewWhenLoaded(_State.ElementToFocus());
3233

3334
TraceLoggingWrite(
3435
g_hTerminalSettingsEditorProvider,

src/cascadia/TerminalSettingsEditor/AddProfile.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
2626
struct AddProfilePageNavigationState : AddProfilePageNavigationStateT<AddProfilePageNavigationState>
2727
{
2828
public:
29-
AddProfilePageNavigationState(const Model::CascadiaSettings& settings) :
30-
_Settings{ settings } {}
29+
AddProfilePageNavigationState(const Model::CascadiaSettings& settings, const hstring& elementToFocus = {}) :
30+
_Settings{ settings },
31+
_ElementToFocus{ elementToFocus } {}
3132

3233
void RequestAddNew()
3334
{
@@ -42,6 +43,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
4243
til::event<AddNewArgs> AddNew;
4344

4445
WINRT_PROPERTY(Model::CascadiaSettings, Settings, nullptr);
46+
WINRT_PROPERTY(hstring, ElementToFocus);
4547
};
4648

4749
struct AddProfile : public HasScrollViewer<AddProfile>, AddProfileT<AddProfile>

src/cascadia/TerminalSettingsEditor/AddProfile.idl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ namespace Microsoft.Terminal.Settings.Editor
88
runtimeclass AddProfilePageNavigationState
99
{
1010
Microsoft.Terminal.Settings.Model.CascadiaSettings Settings;
11+
String ElementToFocus { get; };
12+
1113
void RequestAddNew();
1214
void RequestDuplicate(Guid profile);
1315
event AddNewArgs AddNew;

src/cascadia/TerminalSettingsEditor/AddProfile.xaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
</Button>
3838
</Border>
3939
<StackPanel Margin="{StaticResource StandardControlMargin}">
40-
<local:SettingContainer x:Uid="AddProfile_Duplicate">
40+
<local:SettingContainer x:Name="DuplicateProfile"
41+
x:Uid="AddProfile_Duplicate">
4142
<ComboBox x:Name="Profiles"
4243
AutomationProperties.AccessibilityView="Content"
4344
ItemsSource="{x:Bind State.Settings.AllProfiles, Mode=OneWay}"

src/cascadia/TerminalSettingsEditor/Appearances.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,6 +1134,24 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
11341134
INITIALIZE_BINDABLE_ENUM_SETTING(IntenseTextStyle, IntenseTextStyle, winrt::Microsoft::Terminal::Settings::Model::IntenseStyle, L"Appearance_IntenseTextStyle", L"Content");
11351135
}
11361136

1137+
void Appearances::BringIntoViewWhenLoaded(hstring elementToFocus)
1138+
{
1139+
if (elementToFocus.empty())
1140+
{
1141+
return;
1142+
}
1143+
1144+
_loadedRevoker = this->Loaded(winrt::auto_revoke, [weakThis{ get_weak() }, elementToFocus](auto&&, auto&&) {
1145+
if (const auto strongThis = weakThis.get())
1146+
{
1147+
if (const auto element = strongThis->FindName(elementToFocus))
1148+
{
1149+
element.as<FrameworkElement>().StartBringIntoView();
1150+
}
1151+
}
1152+
});
1153+
}
1154+
11371155
IObservableVector<Editor::Font> Appearances::FilteredFontList()
11381156
{
11391157
if (!_filteredFonts)

src/cascadia/TerminalSettingsEditor/Appearances.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
188188
struct Appearances : AppearancesT<Appearances>
189189
{
190190
Appearances();
191+
void BringIntoViewWhenLoaded(hstring elementToFocus);
191192

192193
// CursorShape visibility logic
193194
bool IsVintageCursor() const;
@@ -210,6 +211,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
210211
bool IsCustomFontWeight();
211212

212213
til::property_changed_event PropertyChanged;
214+
winrt::Windows::UI::Xaml::FrameworkElement::Loaded_revoker _loadedRevoker;
213215

214216
WINRT_PROPERTY(Windows::Foundation::Collections::IObservableVector<Microsoft::Terminal::Settings::Editor::EnumEntry>, FontWeightList);
215217

src/cascadia/TerminalSettingsEditor/Appearances.xaml

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@
7272
Style="{StaticResource TextBlockSubHeaderStyle}" />
7373
<!-- Color Scheme -->
7474
<!-- This currently only display the Dark color scheme, even if the user has a pair of schemes set. -->
75-
<local:SettingContainer x:Uid="Profile_ColorScheme"
75+
<local:SettingContainer x:Name="ColorScheme"
76+
x:Uid="Profile_ColorScheme"
7677
ClearSettingValue="{x:Bind Appearance.ClearColorScheme}"
7778
CurrentValueAccessibleName="{x:Bind Appearance.CurrentColorScheme.Name, Mode=OneWay}"
7879
HasSettingValue="{x:Bind Appearance.HasDarkColorSchemeName, Mode=OneWay}"
@@ -280,17 +281,20 @@
280281
IsChecked="{x:Bind ShowAllFonts, Mode=TwoWay}" />
281282
</StackPanel>
282283
</local:SettingContainer>
283-
<local:SettingContainer x:Uid="Profile_MissingFontFaces"
284+
<local:SettingContainer x:Name="MissingFontFaces"
285+
x:Uid="Profile_MissingFontFaces"
284286
HelpText="{x:Bind Appearance.MissingFontFaces, Mode=OneWay}"
285287
Style="{StaticResource SettingContainerErrorStyle}"
286288
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.MissingFontFaces), Mode=OneWay}" />
287-
<local:SettingContainer x:Uid="Profile_ProportionalFontFaces"
289+
<local:SettingContainer x:Name="ProportionalFontFaces"
290+
x:Uid="Profile_ProportionalFontFaces"
288291
HelpText="{x:Bind Appearance.ProportionalFontFaces, Mode=OneWay}"
289292
Style="{StaticResource SettingContainerWarningStyle}"
290293
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.ProportionalFontFaces), Mode=OneWay}" />
291294

292295
<!-- Font Size -->
293-
<local:SettingContainer x:Uid="Profile_FontSize"
296+
<local:SettingContainer x:Name="FontSize"
297+
x:Uid="Profile_FontSize"
294298
ClearSettingValue="{x:Bind Appearance.ClearFontSize}"
295299
HasSettingValue="{x:Bind Appearance.HasFontSize, Mode=OneWay}"
296300
SettingOverrideSource="{x:Bind Appearance.FontSizeOverrideSource, Mode=OneWay}"
@@ -306,7 +310,8 @@
306310
</local:SettingContainer>
307311

308312
<!-- Line Height -->
309-
<local:SettingContainer x:Uid="Profile_LineHeight"
313+
<local:SettingContainer x:Name="LineHeight"
314+
x:Uid="Profile_LineHeight"
310315
ClearSettingValue="{x:Bind Appearance.ClearLineHeight}"
311316
HasSettingValue="{x:Bind Appearance.HasLineHeight, Mode=OneWay}"
312317
SettingOverrideSource="{x:Bind Appearance.LineHeightOverrideSource, Mode=OneWay}"
@@ -322,7 +327,8 @@
322327
</local:SettingContainer>
323328

324329
<!-- Cell Width -->
325-
<local:SettingContainer x:Uid="Profile_CellWidth"
330+
<local:SettingContainer x:Name="CellWidth"
331+
x:Uid="Profile_CellWidth"
326332
ClearSettingValue="{x:Bind Appearance.ClearCellWidth}"
327333
HasSettingValue="{x:Bind Appearance.HasCellWidth, Mode=OneWay}"
328334
SettingOverrideSource="{x:Bind Appearance.CellWidthOverrideSource, Mode=OneWay}"
@@ -338,7 +344,8 @@
338344
</local:SettingContainer>
339345

340346
<!-- Font Weight -->
341-
<local:SettingContainer x:Uid="Profile_FontWeight"
347+
<local:SettingContainer x:Name="FontWeight"
348+
x:Uid="Profile_FontWeight"
342349
ClearSettingValue="{x:Bind Appearance.ClearFontWeight}"
343350
HasSettingValue="{x:Bind Appearance.HasFontWeight, Mode=OneWay}"
344351
SettingOverrideSource="{x:Bind Appearance.FontWeightOverrideSource, Mode=OneWay}"
@@ -374,7 +381,8 @@
374381
</Grid>
375382
</StackPanel>
376383
</local:SettingContainer>
377-
<local:SettingContainer x:Uid="Profile_FontAxes"
384+
<local:SettingContainer x:Name="FontAxes"
385+
x:Uid="Profile_FontAxes"
378386
ClearSettingValue="{x:Bind Appearance.ClearFontAxes}"
379387
HasSettingValue="{x:Bind Appearance.HasFontAxes, Mode=OneWay}"
380388
SettingOverrideSource="{x:Bind Appearance.FontAxesOverrideSource, Mode=OneWay}"
@@ -401,7 +409,8 @@
401409
</muxc:DropDownButton>
402410
</StackPanel>
403411
</local:SettingContainer>
404-
<local:SettingContainer x:Uid="Profile_FontFeatures"
412+
<local:SettingContainer x:Name="FontFeatures"
413+
x:Uid="Profile_FontFeatures"
405414
ClearSettingValue="{x:Bind Appearance.ClearFontFeatures}"
406415
HasSettingValue="{x:Bind Appearance.HasFontFeatures, Mode=OneWay}"
407416
SettingOverrideSource="{x:Bind Appearance.FontFeaturesOverrideSource, Mode=OneWay}"
@@ -430,7 +439,8 @@
430439
</local:SettingContainer>
431440

432441
<!-- Builtin Glyphs -->
433-
<local:SettingContainer x:Uid="Profile_EnableBuiltinGlyphs"
442+
<local:SettingContainer x:Name="EnableBuiltinGlyphs"
443+
x:Uid="Profile_EnableBuiltinGlyphs"
434444
ClearSettingValue="{x:Bind Appearance.ClearEnableBuiltinGlyphs}"
435445
HasSettingValue="{x:Bind Appearance.HasEnableBuiltinGlyphs, Mode=OneWay}"
436446
SettingOverrideSource="{x:Bind Appearance.EnableBuiltinGlyphsOverrideSource, Mode=OneWay}">
@@ -439,7 +449,8 @@
439449
</local:SettingContainer>
440450

441451
<!-- Color Glyphs -->
442-
<local:SettingContainer x:Uid="Profile_EnableColorGlyphs"
452+
<local:SettingContainer x:Name="EnableColorGlyphs"
453+
x:Uid="Profile_EnableColorGlyphs"
443454
ClearSettingValue="{x:Bind Appearance.ClearEnableColorGlyphs}"
444455
HasSettingValue="{x:Bind Appearance.HasEnableColorGlyphs, Mode=OneWay}"
445456
SettingOverrideSource="{x:Bind Appearance.EnableColorGlyphsOverrideSource, Mode=OneWay}">
@@ -448,7 +459,8 @@
448459
</local:SettingContainer>
449460

450461
<!-- Retro Terminal Effect -->
451-
<local:SettingContainer x:Uid="Profile_RetroTerminalEffect"
462+
<local:SettingContainer x:Name="RetroTerminalEffect"
463+
x:Uid="Profile_RetroTerminalEffect"
452464
ClearSettingValue="{x:Bind Appearance.ClearRetroTerminalEffect}"
453465
HasSettingValue="{x:Bind Appearance.HasRetroTerminalEffect, Mode=OneWay}"
454466
SettingOverrideSource="{x:Bind Appearance.RetroTerminalEffectOverrideSource, Mode=OneWay}">
@@ -457,7 +469,8 @@
457469
</local:SettingContainer>
458470

459471
<!-- Adjust Indistinguishable Colors -->
460-
<local:SettingContainer x:Uid="Profile_AdjustIndistinguishableColors"
472+
<local:SettingContainer x:Name="AdjustIndistinguishableColors"
473+
x:Uid="Profile_AdjustIndistinguishableColors"
461474
ClearSettingValue="{x:Bind Appearance.ClearAdjustIndistinguishableColors}"
462475
HasSettingValue="{x:Bind Appearance.HasAdjustIndistinguishableColors, Mode=OneWay}"
463476
SettingOverrideSource="{x:Bind Appearance.AdjustIndistinguishableColorsOverrideSource, Mode=OneWay}">
@@ -475,7 +488,8 @@
475488
Style="{StaticResource TextBlockSubHeaderStyle}" />
476489

477490
<!-- Cursor Shape -->
478-
<local:SettingContainer x:Uid="Profile_CursorShape"
491+
<local:SettingContainer x:Name="CursorShape"
492+
x:Uid="Profile_CursorShape"
479493
ClearSettingValue="{x:Bind Appearance.ClearCursorShape}"
480494
HasSettingValue="{x:Bind Appearance.HasCursorShape, Mode=OneWay}"
481495
SettingOverrideSource="{x:Bind Appearance.CursorShapeOverrideSource, Mode=OneWay}">
@@ -487,7 +501,8 @@
487501
</local:SettingContainer>
488502

489503
<!-- Cursor Height -->
490-
<local:SettingContainer x:Uid="Profile_CursorHeight"
504+
<local:SettingContainer x:Name="CursorHeight"
505+
x:Uid="Profile_CursorHeight"
491506
ClearSettingValue="{x:Bind Appearance.ClearCursorHeight}"
492507
HasSettingValue="{x:Bind Appearance.HasCursorHeight, Mode=OneWay}"
493508
SettingOverrideSource="{x:Bind Appearance.CursorHeightOverrideSource, Mode=OneWay}"
@@ -559,7 +574,8 @@
559574
</local:SettingContainer>
560575

561576
<!-- Background Image Stretch Mode -->
562-
<local:SettingContainer x:Uid="Profile_BackgroundImageStretchMode"
577+
<local:SettingContainer x:Name="BackgroundImageStretchMode"
578+
x:Uid="Profile_BackgroundImageStretchMode"
563579
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageStretchMode}"
564580
HasSettingValue="{x:Bind Appearance.HasBackgroundImageStretchMode, Mode=OneWay}"
565581
SettingOverrideSource="{x:Bind Appearance.BackgroundImageStretchModeOverrideSource, Mode=OneWay}"
@@ -572,7 +588,8 @@
572588
</local:SettingContainer>
573589

574590
<!-- Background Image Alignment -->
575-
<local:SettingContainer x:Uid="Profile_BackgroundImageAlignment"
591+
<local:SettingContainer x:Name="BackgroundImageAlignment"
592+
x:Uid="Profile_BackgroundImageAlignment"
576593
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageAlignment}"
577594
CurrentValue="{x:Bind Appearance.BackgroundImageAlignmentCurrentValue, Mode=OneWay}"
578595
HasSettingValue="{x:Bind Appearance.HasBackgroundImageAlignment, Mode=OneWay}"
@@ -760,7 +777,8 @@
760777
</local:SettingContainer>
761778

762779
<!-- Background Image Opacity -->
763-
<local:SettingContainer x:Uid="Profile_BackgroundImageOpacity"
780+
<local:SettingContainer x:Name="BackgroundImageOpacity"
781+
x:Uid="Profile_BackgroundImageOpacity"
764782
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageOpacity}"
765783
HasSettingValue="{x:Bind Appearance.HasBackgroundImageOpacity, Mode=OneWay}"
766784
SettingOverrideSource="{x:Bind Appearance.BackgroundImageOpacityOverrideSource, Mode=OneWay}"
@@ -786,7 +804,8 @@
786804
Style="{StaticResource TextBlockSubHeaderStyle}" />
787805

788806
<!-- Intense is bold, bright -->
789-
<local:SettingContainer x:Uid="Appearance_IntenseTextStyle"
807+
<local:SettingContainer x:Name="IntenseTextStyle"
808+
x:Uid="Appearance_IntenseTextStyle"
790809
ClearSettingValue="{x:Bind Appearance.ClearIntenseTextStyle}"
791810
HasSettingValue="{x:Bind Appearance.HasIntenseTextStyle, Mode=OneWay}"
792811
SettingOverrideSource="{x:Bind Appearance.IntenseTextStyleOverrideSource, Mode=OneWay}">

src/cascadia/TerminalSettingsEditor/ColorSchemes.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "pch.h"
55
#include "ColorSchemes.h"
66
#include "ColorTableEntry.g.cpp"
7+
#include "NavigateToPageArgs.g.h"
78
#include "ColorSchemes.g.cpp"
89

910
#include <LibraryResources.h>
@@ -35,9 +36,12 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
3536

3637
void ColorSchemes::OnNavigatedTo(const NavigationEventArgs& e)
3738
{
38-
_ViewModel = e.Parameter().as<Editor::ColorSchemesPageViewModel>();
39+
const auto args = e.Parameter().as<Editor::NavigateToPageArgs>();
40+
_ViewModel = args.ViewModel().as<Editor::ColorSchemesPageViewModel>();
3941
_ViewModel.CurrentPage(ColorSchemesSubPage::Base);
4042

43+
BringIntoViewWhenLoaded(args.ElementToFocus());
44+
4145
_layoutUpdatedRevoker = LayoutUpdated(winrt::auto_revoke, [this](auto /*s*/, auto /*e*/) {
4246
// Only let this succeed once.
4347
_layoutUpdatedRevoker.revoke();

0 commit comments

Comments
 (0)