Skip to content

Commit 1a68985

Browse files
committed
PRE-MERGE #19519 Implement search in Settings UI
2 parents fe718b6 + 82a986a commit 1a68985

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

+1971
-315
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: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
#include "pch.h"
55
#include "Actions.h"
66
#include "Actions.g.cpp"
7+
#include "NavigateToPageArgs.g.h"
8+
#include "LibraryResources.h"
79
#include "../TerminalSettingsModel/AllShortcutActions.h"
810

911
using namespace winrt::Windows::UI::Xaml;
@@ -20,16 +22,17 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
2022

2123
void Actions::OnNavigatedTo(const NavigationEventArgs& e)
2224
{
23-
_ViewModel = e.Parameter().as<Editor::ActionsViewModel>();
25+
const auto args = e.Parameter().as<Editor::NavigateToPageArgs>();
26+
_ViewModel = args.ViewModel().as<Editor::ActionsViewModel>();
2427
_ViewModel.CurrentPage(ActionsSubPage::Base);
25-
auto vmImpl = get_self<ActionsViewModel>(_ViewModel);
26-
vmImpl->MarkAsVisited();
28+
get_self<ActionsViewModel>(_ViewModel)->MarkAsVisited();
2729
_layoutUpdatedRevoker = LayoutUpdated(winrt::auto_revoke, [this](auto /*s*/, auto /*e*/) {
2830
// Only let this succeed once.
2931
_layoutUpdatedRevoker.revoke();
3032

3133
AddNewButton().Focus(FocusState::Programmatic);
3234
});
35+
BringIntoViewWhenLoaded(args.ElementToFocus());
3336

3437
TraceLoggingWrite(
3538
g_hTerminalSettingsEditorProvider,

src/cascadia/TerminalSettingsEditor/ActionsViewModel.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
5353
public:
5454
NavigateToCommandArgs(CommandViewModel command, Editor::IHostedInWindow windowRoot) :
5555
_Command(command),
56-
_WindowRoot(windowRoot) {}
56+
_WeakWindowRoot(windowRoot) {}
5757

58-
Editor::IHostedInWindow WindowRoot() const noexcept { return _WindowRoot; }
58+
Editor::IHostedInWindow WindowRoot() const noexcept { return _WeakWindowRoot.get(); }
5959
Editor::CommandViewModel Command() const noexcept { return _Command; }
6060

6161
private:
62-
Editor::IHostedInWindow _WindowRoot;
62+
winrt::weak_ref<Editor::IHostedInWindow> _WeakWindowRoot;
6363
Editor::CommandViewModel _Command{ nullptr };
6464
};
6565

src/cascadia/TerminalSettingsEditor/AddProfile.cpp

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

3132
TraceLoggingWrite(
3233
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: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,6 +1138,27 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
11381138
INITIALIZE_BINDABLE_ENUM_SETTING(IntenseTextStyle, IntenseTextStyle, winrt::Microsoft::Terminal::Settings::Model::IntenseStyle, L"Appearance_IntenseTextStyle", L"Content");
11391139
}
11401140

1141+
// Appearances doesn't implement HasScrollViewer<T> which normally adds this function.
1142+
void Appearances::BringIntoViewWhenLoaded(hstring elementToFocus)
1143+
{
1144+
if (elementToFocus.empty())
1145+
{
1146+
return;
1147+
}
1148+
1149+
_loadedRevoker = this->Loaded(winrt::auto_revoke, [weakThis{ get_weak() }, elementToFocus](auto&&, auto&&) {
1150+
if (const auto strongThis = weakThis.get())
1151+
{
1152+
if (const auto& controlToFocus{ strongThis->FindName(elementToFocus).try_as<Controls::Control>() })
1153+
{
1154+
controlToFocus.as<FrameworkElement>().StartBringIntoView();
1155+
controlToFocus.Focus(FocusState::Programmatic);
1156+
}
1157+
strongThis->_loadedRevoker.revoke();
1158+
}
1159+
});
1160+
}
1161+
11411162
IObservableVector<Editor::Font> Appearances::FilteredFontList()
11421163
{
11431164
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
@@ -75,7 +75,8 @@
7575
Style="{StaticResource TextBlockSubHeaderStyle}" />
7676
<!-- Color Scheme -->
7777
<!-- This currently only display the Dark color scheme, even if the user has a pair of schemes set. -->
78-
<local:SettingContainer x:Uid="Profile_ColorScheme"
78+
<local:SettingContainer x:Name="ColorScheme"
79+
x:Uid="Profile_ColorScheme"
7980
ClearSettingValue="{x:Bind Appearance.ClearColorScheme}"
8081
CurrentValueAccessibleName="{x:Bind Appearance.CurrentColorScheme.Name, Mode=OneWay}"
8182
HasSettingValue="{x:Bind Appearance.HasDarkColorSchemeName, Mode=OneWay}"
@@ -284,17 +285,20 @@
284285
IsChecked="{x:Bind ShowAllFonts, Mode=TwoWay}" />
285286
</StackPanel>
286287
</local:SettingContainer>
287-
<local:SettingContainer x:Uid="Profile_MissingFontFaces"
288+
<local:SettingContainer x:Name="MissingFontFaces"
289+
x:Uid="Profile_MissingFontFaces"
288290
HelpText="{x:Bind Appearance.MissingFontFaces, Mode=OneWay}"
289291
Style="{StaticResource SettingContainerErrorStyle}"
290292
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.MissingFontFaces), Mode=OneWay}" />
291-
<local:SettingContainer x:Uid="Profile_ProportionalFontFaces"
293+
<local:SettingContainer x:Name="ProportionalFontFaces"
294+
x:Uid="Profile_ProportionalFontFaces"
292295
HelpText="{x:Bind Appearance.ProportionalFontFaces, Mode=OneWay}"
293296
Style="{StaticResource SettingContainerWarningStyle}"
294297
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.ProportionalFontFaces), Mode=OneWay}" />
295298

296299
<!-- Font Size -->
297-
<local:SettingContainer x:Uid="Profile_FontSize"
300+
<local:SettingContainer x:Name="FontSize"
301+
x:Uid="Profile_FontSize"
298302
ClearSettingValue="{x:Bind Appearance.ClearFontSize}"
299303
HasSettingValue="{x:Bind Appearance.HasFontSize, Mode=OneWay}"
300304
SettingOverrideSource="{x:Bind Appearance.FontSizeOverrideSource, Mode=OneWay}"
@@ -310,7 +314,8 @@
310314
</local:SettingContainer>
311315

312316
<!-- Line Height -->
313-
<local:SettingContainer x:Uid="Profile_LineHeight"
317+
<local:SettingContainer x:Name="LineHeight"
318+
x:Uid="Profile_LineHeight"
314319
ClearSettingValue="{x:Bind Appearance.ClearLineHeight}"
315320
HasSettingValue="{x:Bind Appearance.HasLineHeight, Mode=OneWay}"
316321
SettingOverrideSource="{x:Bind Appearance.LineHeightOverrideSource, Mode=OneWay}"
@@ -326,7 +331,8 @@
326331
</local:SettingContainer>
327332

328333
<!-- Cell Width -->
329-
<local:SettingContainer x:Uid="Profile_CellWidth"
334+
<local:SettingContainer x:Name="CellWidth"
335+
x:Uid="Profile_CellWidth"
330336
ClearSettingValue="{x:Bind Appearance.ClearCellWidth}"
331337
HasSettingValue="{x:Bind Appearance.HasCellWidth, Mode=OneWay}"
332338
SettingOverrideSource="{x:Bind Appearance.CellWidthOverrideSource, Mode=OneWay}"
@@ -342,7 +348,8 @@
342348
</local:SettingContainer>
343349

344350
<!-- Font Weight -->
345-
<local:SettingContainer x:Uid="Profile_FontWeight"
351+
<local:SettingContainer x:Name="FontWeight"
352+
x:Uid="Profile_FontWeight"
346353
ClearSettingValue="{x:Bind Appearance.ClearFontWeight}"
347354
HasSettingValue="{x:Bind Appearance.HasFontWeight, Mode=OneWay}"
348355
SettingOverrideSource="{x:Bind Appearance.FontWeightOverrideSource, Mode=OneWay}"
@@ -378,7 +385,8 @@
378385
</Grid>
379386
</StackPanel>
380387
</local:SettingContainer>
381-
<local:SettingContainer x:Uid="Profile_FontAxes"
388+
<local:SettingContainer x:Name="FontAxes"
389+
x:Uid="Profile_FontAxes"
382390
ClearSettingValue="{x:Bind Appearance.ClearFontAxes}"
383391
HasSettingValue="{x:Bind Appearance.HasFontAxes, Mode=OneWay}"
384392
SettingOverrideSource="{x:Bind Appearance.FontAxesOverrideSource, Mode=OneWay}"
@@ -405,7 +413,8 @@
405413
</muxc:DropDownButton>
406414
</StackPanel>
407415
</local:SettingContainer>
408-
<local:SettingContainer x:Uid="Profile_FontFeatures"
416+
<local:SettingContainer x:Name="FontFeatures"
417+
x:Uid="Profile_FontFeatures"
409418
ClearSettingValue="{x:Bind Appearance.ClearFontFeatures}"
410419
HasSettingValue="{x:Bind Appearance.HasFontFeatures, Mode=OneWay}"
411420
SettingOverrideSource="{x:Bind Appearance.FontFeaturesOverrideSource, Mode=OneWay}"
@@ -434,7 +443,8 @@
434443
</local:SettingContainer>
435444

436445
<!-- Builtin Glyphs -->
437-
<local:SettingContainer x:Uid="Profile_EnableBuiltinGlyphs"
446+
<local:SettingContainer x:Name="EnableBuiltinGlyphs"
447+
x:Uid="Profile_EnableBuiltinGlyphs"
438448
ClearSettingValue="{x:Bind Appearance.ClearEnableBuiltinGlyphs}"
439449
HasSettingValue="{x:Bind Appearance.HasEnableBuiltinGlyphs, Mode=OneWay}"
440450
SettingOverrideSource="{x:Bind Appearance.EnableBuiltinGlyphsOverrideSource, Mode=OneWay}">
@@ -443,7 +453,8 @@
443453
</local:SettingContainer>
444454

445455
<!-- Color Glyphs -->
446-
<local:SettingContainer x:Uid="Profile_EnableColorGlyphs"
456+
<local:SettingContainer x:Name="EnableColorGlyphs"
457+
x:Uid="Profile_EnableColorGlyphs"
447458
ClearSettingValue="{x:Bind Appearance.ClearEnableColorGlyphs}"
448459
HasSettingValue="{x:Bind Appearance.HasEnableColorGlyphs, Mode=OneWay}"
449460
SettingOverrideSource="{x:Bind Appearance.EnableColorGlyphsOverrideSource, Mode=OneWay}">
@@ -452,7 +463,8 @@
452463
</local:SettingContainer>
453464

454465
<!-- Retro Terminal Effect -->
455-
<local:SettingContainer x:Uid="Profile_RetroTerminalEffect"
466+
<local:SettingContainer x:Name="RetroTerminalEffect"
467+
x:Uid="Profile_RetroTerminalEffect"
456468
ClearSettingValue="{x:Bind Appearance.ClearRetroTerminalEffect}"
457469
HasSettingValue="{x:Bind Appearance.HasRetroTerminalEffect, Mode=OneWay}"
458470
SettingOverrideSource="{x:Bind Appearance.RetroTerminalEffectOverrideSource, Mode=OneWay}">
@@ -461,7 +473,8 @@
461473
</local:SettingContainer>
462474

463475
<!-- Adjust Indistinguishable Colors -->
464-
<local:SettingContainer x:Uid="Profile_AdjustIndistinguishableColors"
476+
<local:SettingContainer x:Name="AdjustIndistinguishableColors"
477+
x:Uid="Profile_AdjustIndistinguishableColors"
465478
ClearSettingValue="{x:Bind Appearance.ClearAdjustIndistinguishableColors}"
466479
HasSettingValue="{x:Bind Appearance.HasAdjustIndistinguishableColors, Mode=OneWay}"
467480
SettingOverrideSource="{x:Bind Appearance.AdjustIndistinguishableColorsOverrideSource, Mode=OneWay}">
@@ -479,7 +492,8 @@
479492
Style="{StaticResource TextBlockSubHeaderStyle}" />
480493

481494
<!-- Cursor Shape -->
482-
<local:SettingContainer x:Uid="Profile_CursorShape"
495+
<local:SettingContainer x:Name="CursorShape"
496+
x:Uid="Profile_CursorShape"
483497
ClearSettingValue="{x:Bind Appearance.ClearCursorShape}"
484498
HasSettingValue="{x:Bind Appearance.HasCursorShape, Mode=OneWay}"
485499
SettingOverrideSource="{x:Bind Appearance.CursorShapeOverrideSource, Mode=OneWay}">
@@ -491,7 +505,8 @@
491505
</local:SettingContainer>
492506

493507
<!-- Cursor Height -->
494-
<local:SettingContainer x:Uid="Profile_CursorHeight"
508+
<local:SettingContainer x:Name="CursorHeight"
509+
x:Uid="Profile_CursorHeight"
495510
ClearSettingValue="{x:Bind Appearance.ClearCursorHeight}"
496511
HasSettingValue="{x:Bind Appearance.HasCursorHeight, Mode=OneWay}"
497512
SettingOverrideSource="{x:Bind Appearance.CursorHeightOverrideSource, Mode=OneWay}"
@@ -563,7 +578,8 @@
563578
</local:SettingContainer>
564579

565580
<!-- Background Image Stretch Mode -->
566-
<local:SettingContainer x:Uid="Profile_BackgroundImageStretchMode"
581+
<local:SettingContainer x:Name="BackgroundImageStretchMode"
582+
x:Uid="Profile_BackgroundImageStretchMode"
567583
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageStretchMode}"
568584
HasSettingValue="{x:Bind Appearance.HasBackgroundImageStretchMode, Mode=OneWay}"
569585
SettingOverrideSource="{x:Bind Appearance.BackgroundImageStretchModeOverrideSource, Mode=OneWay}"
@@ -576,7 +592,8 @@
576592
</local:SettingContainer>
577593

578594
<!-- Background Image Alignment -->
579-
<local:SettingContainer x:Uid="Profile_BackgroundImageAlignment"
595+
<local:SettingContainer x:Name="BackgroundImageAlignment"
596+
x:Uid="Profile_BackgroundImageAlignment"
580597
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageAlignment}"
581598
CurrentValue="{x:Bind Appearance.BackgroundImageAlignmentCurrentValue, Mode=OneWay}"
582599
HasSettingValue="{x:Bind Appearance.HasBackgroundImageAlignment, Mode=OneWay}"
@@ -764,7 +781,8 @@
764781
</local:SettingContainer>
765782

766783
<!-- Background Image Opacity -->
767-
<local:SettingContainer x:Uid="Profile_BackgroundImageOpacity"
784+
<local:SettingContainer x:Name="BackgroundImageOpacity"
785+
x:Uid="Profile_BackgroundImageOpacity"
768786
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageOpacity}"
769787
HasSettingValue="{x:Bind Appearance.HasBackgroundImageOpacity, Mode=OneWay}"
770788
SettingOverrideSource="{x:Bind Appearance.BackgroundImageOpacityOverrideSource, Mode=OneWay}"
@@ -790,7 +808,8 @@
790808
Style="{StaticResource TextBlockSubHeaderStyle}" />
791809

792810
<!-- Intense is bold, bright -->
793-
<local:SettingContainer x:Uid="Appearance_IntenseTextStyle"
811+
<local:SettingContainer x:Name="IntenseTextStyle"
812+
x:Uid="Appearance_IntenseTextStyle"
794813
ClearSettingValue="{x:Bind Appearance.ClearIntenseTextStyle}"
795814
HasSettingValue="{x:Bind Appearance.HasIntenseTextStyle, Mode=OneWay}"
796815
SettingOverrideSource="{x:Bind Appearance.IntenseTextStyleOverrideSource, Mode=OneWay}">

0 commit comments

Comments
 (0)