mirror of
https://github.com/microsoft/terminal.git
synced 2026-02-04 01:04:40 +00:00
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.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<!-- Native packages -->
|
||||
<package id="Microsoft.Internal.PGO-Helpers.Cpp" version="0.2.34" targetFramework="native" />
|
||||
<package id="Microsoft.Taef" version="10.93.240607003" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
|
||||
<package id="Microsoft.Internal.Windows.Terminal.ThemeHelpers" version="0.8.250811004" targetFramework="native" />
|
||||
<package id="Microsoft.VisualStudio.Setup.Configuration.Native" version="2.3.2262" targetFramework="native" developmentDependency="true" />
|
||||
<package id="Microsoft.UI.Xaml" version="2.8.4" targetFramework="native" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
|
||||
<package id="Microsoft.UI.Xaml" version="2.8.4" targetFramework="native" />
|
||||
<package id="Microsoft.Web.WebView2" version="1.0.1661.34" targetFramework="native" />
|
||||
</packages>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.230207.1" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
|
||||
<package id="Microsoft.UI.Xaml" version="2.8.4" targetFramework="native" />
|
||||
<package id="Microsoft.Web.WebView2" version="1.0.1661.34" targetFramework="native" />
|
||||
</packages>
|
||||
|
||||
@@ -21,8 +21,8 @@ namespace TerminalApp
|
||||
UInt32 TabViewIndex;
|
||||
UInt32 TabViewNumTabs;
|
||||
|
||||
overridable void Focus(Windows.UI.Xaml.FocusState focusState);
|
||||
overridable void Shutdown();
|
||||
void Focus(Windows.UI.Xaml.FocusState focusState);
|
||||
void Shutdown();
|
||||
|
||||
void SetDispatch(ShortcutActionDispatch dispatch);
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
const auto xutr = winrt::make_self<XamlUiaTextRange>(returnVal, parent.ProviderFromPeer(parent));
|
||||
const auto xutr = winrt::make_self<XamlUiaTextRange>(returnVal, parent.as<IAutomationPeerProtected>().ProviderFromPeer(parent));
|
||||
return xutr.as<XamlAutomation::ITextRangeProvider>();
|
||||
};
|
||||
|
||||
|
||||
@@ -3458,13 +3458,14 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// Switch on the light and animate the intensity to fade out
|
||||
VisualBellLight::SetIsTarget(RootGrid(), true);
|
||||
|
||||
auto compositionLight{ BellLight().as<Windows::UI::Xaml::Media::IXamlLightProtected>().CompositionLight() };
|
||||
if (_isBackgroundLight)
|
||||
{
|
||||
BellLight().CompositionLight().StartAnimation(L"Intensity", _bellDarkAnimation);
|
||||
compositionLight.StartAnimation(L"Intensity", _bellDarkAnimation);
|
||||
}
|
||||
else
|
||||
{
|
||||
BellLight().CompositionLight().StartAnimation(L"Intensity", _bellLightAnimation);
|
||||
compositionLight.StartAnimation(L"Intensity", _bellLightAnimation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ struct
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
||||
{
|
||||
struct EmptyMediaResource : winrt::implements<EmptyMediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::non_agile, winrt::no_weak_ref, winrt::no_module_lock>
|
||||
struct EmptyMediaResource : winrt::implements<EmptyMediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::no_weak_ref, winrt::no_module_lock>
|
||||
{
|
||||
// Micro-optimization: having one empty resource that contains no actual paths saves us a few bytes per object
|
||||
winrt::hstring Path() { return {}; };
|
||||
@@ -58,7 +58,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
||||
* path--this is intended to aid its use in places where the risk of using an unresolved media path
|
||||
* is fine.
|
||||
*/
|
||||
struct MediaResource : winrt::implements<MediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::non_agile, winrt::no_weak_ref, winrt::no_module_lock>
|
||||
struct MediaResource : winrt::implements<MediaResource, winrt::Microsoft::Terminal::Settings::Model::IMediaResource, winrt::no_weak_ref, winrt::no_module_lock>
|
||||
{
|
||||
MediaResource() {}
|
||||
MediaResource(const winrt::hstring& p) :
|
||||
|
||||
@@ -43,7 +43,9 @@ namespace winrt::Microsoft::Terminal::UI::implementation
|
||||
// No common interface.
|
||||
if (const auto box = target.try_as<NumberBox>())
|
||||
{
|
||||
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
// Accessing template children from outside the class is unspecified; GetTemplateChild is
|
||||
// a protected member. It does work, though.
|
||||
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
}
|
||||
if (const auto control = target.try_as<TextBlock>())
|
||||
{
|
||||
@@ -98,7 +100,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
|
||||
|
||||
if (const auto box = target.try_as<NumberBox>())
|
||||
{
|
||||
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
}
|
||||
if (const auto control = target.try_as<TextBox>())
|
||||
{
|
||||
@@ -116,7 +118,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
|
||||
|
||||
if (const auto box = target.try_as<NumberBox>())
|
||||
{
|
||||
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
}
|
||||
if (const auto control = target.try_as<TextBlock>())
|
||||
{
|
||||
@@ -142,7 +144,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
|
||||
|
||||
if (const auto box = target.try_as<NumberBox>())
|
||||
{
|
||||
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
}
|
||||
if (const auto control = target.try_as<TextBox>())
|
||||
{
|
||||
@@ -169,7 +171,7 @@ namespace winrt::Microsoft::Terminal::UI::implementation
|
||||
|
||||
if (const auto box = target.try_as<NumberBox>())
|
||||
{
|
||||
target = box.GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
target = box.as<IControlProtected>().GetTemplateChild(L"InputBox").as<TextBox>();
|
||||
}
|
||||
if (const auto control = target.try_as<TextBlock>())
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<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" />
|
||||
|
||||
<!-- CppWinrt -->
|
||||
<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')" />
|
||||
<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')" />
|
||||
|
||||
<!-- TAEF -->
|
||||
<PropertyGroup>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<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" />
|
||||
|
||||
<!-- CppWinrt -->
|
||||
<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')" />
|
||||
<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')" />
|
||||
|
||||
<!-- TAEF -->
|
||||
<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 @@
|
||||
<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))" />
|
||||
|
||||
<!-- CppWinrt -->
|
||||
<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'))" />
|
||||
<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'))" />
|
||||
<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'))" />
|
||||
<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'))" />
|
||||
|
||||
<!-- TAEF -->
|
||||
<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'))" />
|
||||
|
||||
Reference in New Issue
Block a user