Skip to content

Commit 21cfbf1

Browse files
authored
Move to CppWinRT 2.0.250303.1 (#19268)
Interesting changes in this update: - better support for `REFIID,IUnknown**` in `capture` - `LOAD_LIBRARY_SEARCH_DEFAULT_DIRS` for all SxS DLL loading - `get_self` reading from classic COM interfaces (rather than WinRT ones) - better incremental builds by ignoring stale winmd files (see microsoft/cppwinrt#1404) - some ability to mix c++17 and c++20 static libraries - better codegen for `consume` methods This version of C++/WinRT is better about propagating `protected` fields from the metadata into the C++ projections. This required us to switch to the `I...Protected` interfaces for some things we are _technically_ not allowed access to. We also had some `overridable` (protected!) members of our own that needed undec- oration.
1 parent 4f391c5 commit 21cfbf1

File tree

10 files changed

+22
-19
lines changed

10 files changed

+22
-19
lines changed

dep/nuget/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<!-- Native packages -->
55
<package id="Microsoft.Internal.PGO-Helpers.Cpp" version="0.2.34" targetFramework="native" />
66
<package id="Microsoft.Taef" version="10.93.240607003" targetFramework="native" />
7-
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" />
7+
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
88
<package id="Microsoft.Internal.Windows.Terminal.ThemeHelpers" version="0.8.250811004" targetFramework="native" />
99
<package id="Microsoft.VisualStudio.Setup.Configuration.Native" version="2.3.2262" targetFramework="native" developmentDependency="true" />
1010
<package id="Microsoft.UI.Xaml" version="2.8.4" targetFramework="native" />
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" />
3+
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
44
<package id="Microsoft.UI.Xaml" version="2.8.4" targetFramework="native" />
55
<package id="Microsoft.Web.WebView2" version="1.0.1661.34" targetFramework="native" />
66
</packages>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" />
3+
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
44
<package id="Microsoft.UI.Xaml" version="2.8.4" targetFramework="native" />
55
<package id="Microsoft.Web.WebView2" version="1.0.1661.34" targetFramework="native" />
66
</packages>

src/cascadia/TerminalApp/Tab.idl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ namespace TerminalApp
2121
UInt32 TabViewIndex;
2222
UInt32 TabViewNumTabs;
2323

24-
overridable void Focus(Windows.UI.Xaml.FocusState focusState);
25-
overridable void Shutdown();
24+
void Focus(Windows.UI.Xaml.FocusState focusState);
25+
void Shutdown();
2626

2727
void SetDispatch(ShortcutActionDispatch dispatch);
2828
}

src/cascadia/TerminalControl/InteractivityAutomationPeer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
190190
{
191191
return nullptr;
192192
}
193-
const auto xutr = winrt::make_self<XamlUiaTextRange>(returnVal, parent.ProviderFromPeer(parent));
193+
const auto xutr = winrt::make_self<XamlUiaTextRange>(returnVal, parent.as<IAutomationPeerProtected>().ProviderFromPeer(parent));
194194
return xutr.as<XamlAutomation::ITextRangeProvider>();
195195
};
196196

src/cascadia/TerminalControl/TermControl.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3458,13 +3458,14 @@ namespace winrt::Microsoft::Terminal::Control::implementation
34583458
// Switch on the light and animate the intensity to fade out
34593459
VisualBellLight::SetIsTarget(RootGrid(), true);
34603460

3461+
auto compositionLight{ BellLight().as<Windows::UI::Xaml::Media::IXamlLightProtected>().CompositionLight() };
34613462
if (_isBackgroundLight)
34623463
{
3463-
BellLight().CompositionLight().StartAnimation(L"Intensity", _bellDarkAnimation);
3464+
compositionLight.StartAnimation(L"Intensity", _bellDarkAnimation);
34643465
}
34653466
else
34663467
{
3467-
BellLight().CompositionLight().StartAnimation(L"Intensity", _bellLightAnimation);
3468+
compositionLight.StartAnimation(L"Intensity", _bellLightAnimation);
34683469
}
34693470
}
34703471
}

src/cascadia/TerminalSettingsModel/MediaResourceSupport.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ struct
2424

2525
namespace winrt::Microsoft::Terminal::Settings::Model::implementation
2626
{
27-
struct EmptyMediaResource : winrt::implements<EmptyMediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::non_agile, winrt::no_weak_ref, winrt::no_module_lock>
27+
struct EmptyMediaResource : winrt::implements<EmptyMediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::no_weak_ref, winrt::no_module_lock>
2828
{
2929
// Micro-optimization: having one empty resource that contains no actual paths saves us a few bytes per object
3030
winrt::hstring Path() { return {}; };
@@ -58,7 +58,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
5858
* path--this is intended to aid its use in places where the risk of using an unresolved media path
5959
* is fine.
6060
*/
61-
struct MediaResource : winrt::implements<MediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::non_agile, winrt::no_weak_ref, winrt::no_module_lock>
61+
struct MediaResource : winrt::implements<MediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::no_weak_ref, winrt::no_module_lock>
6262
{
6363
MediaResource() {}
6464
MediaResource(const winrt::hstring& p) :

src/cascadia/UIHelpers/TextMenuFlyout.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ namespace winrt::Microsoft::Terminal::UI::implementation
4343
// No common interface.
4444
if (const auto box = target.try_as<NumberBox>())
4545
{
46-
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
46+
// Accessing template children from outside the class is unspecified; GetTemplateChild is
47+
// a protected member. It does work, though.
48+
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
4749
}
4850
if (const auto control = target.try_as<TextBlock>())
4951
{
@@ -98,7 +100,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
98100

99101
if (const auto box = target.try_as<NumberBox>())
100102
{
101-
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
103+
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
102104
}
103105
if (const auto control = target.try_as<TextBox>())
104106
{
@@ -116,7 +118,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
116118

117119
if (const auto box = target.try_as<NumberBox>())
118120
{
119-
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
121+
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
120122
}
121123
if (const auto control = target.try_as<TextBlock>())
122124
{
@@ -142,7 +144,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
142144

143145
if (const auto box = target.try_as<NumberBox>())
144146
{
145-
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
147+
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
146148
}
147149
if (const auto control = target.try_as<TextBox>())
148150
{
@@ -169,7 +171,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
169171

170172
if (const auto box = target.try_as<NumberBox>())
171173
{
172-
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
174+
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
173175
}
174176
if (const auto control = target.try_as<TextBlock>())
175177
{

src/common.nugetversions.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<Import Condition="'$(PgoTarget)' == 'true' And ('$(Platform)'=='x64' or '$(Platform)'=='arm64') And '$(PGOBuildMode)'!='' And Exists('$(SolutionDir)\build\PGO\Terminal.PGO.props')" Project="$(SolutionDir)\build\PGO\Terminal.PGO.props" />
55

66
<!-- CppWinrt -->
7-
<Import Project="$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="'$(TerminalCppWinrt)' == 'true' and Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.props')" />
7+
<Import Project="$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="'$(TerminalCppWinrt)' == 'true' and Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" />
88

99
<!-- TAEF -->
1010
<PropertyGroup>

src/common.nugetversions.targets

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<Import Condition="'$(PgoTarget)' == 'true' And ('$(Platform)'=='x64' or '$(Platform)'=='arm64') And '$(PGOBuildMode)'!='' and Exists('$(PkgMicrosoft_PGO_Helpers_Cpp)\build\Microsoft.PGO-Helpers.Cpp.targets')" Project="$(PkgMicrosoft_PGO_Helpers_Cpp)\build\Microsoft.PGO-Helpers.Cpp.targets" />
4242

4343
<!-- CppWinrt -->
44-
<Import Project="$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="'$(TerminalCppWinrt)' == 'true' and Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
44+
<Import Project="$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="'$(TerminalCppWinrt)' == 'true' and Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
4545

4646
<!-- TAEF -->
4747
<Import Project="$(MSBuildThisFileDirectory)..\packages\Microsoft.Taef.10.93.240607003\build\Microsoft.Taef.targets" Condition="'$(TerminalTAEF)' == 'true' and Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Taef.10.93.240607003\build\Microsoft.Taef.targets')" />
@@ -78,8 +78,8 @@
7878
<Error Condition="'$(PgoTarget)' == 'true' And ('$(Platform)'=='x64' or '$(Platform)'=='arm64') And '$(PGOBuildMode)'!='' AND !Exists('$(PkgMicrosoft_PGO_Helpers_Cpp)\build\Microsoft.PGO-Helpers.Cpp.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(PkgMicrosoft_PGO_Helpers_Cpp)\build\Microsoft.PGO-Helpers.Cpp.targets))" />
7979

8080
<!-- CppWinrt -->
81-
<Error Condition="'$(TerminalCppWinrt)' == 'true' AND !Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.props'))" />
82-
<Error Condition="'$(TerminalCppWinrt)' == 'true' AND !Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.targets'))" />
81+
<Error Condition="'$(TerminalCppWinrt)' == 'true' AND !Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props'))" />
82+
<Error Condition="'$(TerminalCppWinrt)' == 'true' AND !Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildThisFileDirectory)..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets'))" />
8383

8484
<!-- TAEF -->
8585
<Error Condition="'$(TerminalTAEF)' == 'true' AND !Exists('$(MSBuildThisFileDirectory)..\packages\Microsoft.Taef.10.93.240607003\build\Microsoft.Taef.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildThisFileDirectory)..\packages\Microsoft.Taef.10.93.240607003\build\Microsoft.Taef.targets'))" />

0 commit comments

Comments
 (0)