Compare commits
3 commits
main
...
dev/duhowe
Author | SHA1 | Date | |
---|---|---|---|
a7a0d2a6c2 | |||
f5f09a6869 | |||
afa4cbf52d |
|
@ -1761,7 +1761,8 @@ Global
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM.ActiveCfg = Debug|Win32
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM64.Build.0 = Debug|ARM64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|DotNet_x64Test.ActiveCfg = Debug|x64
|
||||||
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|DotNet_x64Test.Build.0 = Debug|x64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|x64.ActiveCfg = Debug|x64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|x64.Build.0 = Debug|x64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
@ -1778,7 +1779,8 @@ Global
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM.ActiveCfg = Release|Win32
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM64.ActiveCfg = Release|ARM64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM64.Build.0 = Release|ARM64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|DotNet_x64Test.ActiveCfg = Release|x64
|
||||||
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|DotNet_x64Test.Build.0 = Release|x64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|x64.ActiveCfg = Release|x64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|x64.ActiveCfg = Release|x64
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|x64.Build.0 = Release|x64
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|x64.Build.0 = Release|x64
|
||||||
|
@ -1834,7 +1836,8 @@ Global
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM.ActiveCfg = Debug|Win32
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM64.Build.0 = Debug|ARM64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|DotNet_x64Test.ActiveCfg = Debug|x64
|
||||||
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|DotNet_x64Test.Build.0 = Debug|x64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|x64.ActiveCfg = Debug|x64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|x64.Build.0 = Debug|x64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
@ -1851,7 +1854,8 @@ Global
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM.ActiveCfg = Release|Win32
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM64.ActiveCfg = Release|ARM64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM64.Build.0 = Release|ARM64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|DotNet_x64Test.ActiveCfg = Release|x64
|
||||||
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|DotNet_x64Test.Build.0 = Release|x64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|x64.ActiveCfg = Release|x64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|x64.ActiveCfg = Release|x64
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|x64.Build.0 = Release|x64
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|x64.Build.0 = Release|x64
|
||||||
|
@ -1868,7 +1872,8 @@ Global
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM.ActiveCfg = Debug|Win32
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM64.Build.0 = Debug|ARM64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|DotNet_x64Test.ActiveCfg = Debug|x64
|
||||||
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|DotNet_x64Test.Build.0 = Debug|x64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|x64.ActiveCfg = Debug|x64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|x64.Build.0 = Debug|x64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
@ -1885,7 +1890,8 @@ Global
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM.ActiveCfg = Release|Win32
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM64.ActiveCfg = Release|ARM64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM64.Build.0 = Release|ARM64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|DotNet_x64Test.ActiveCfg = Release|x64
|
||||||
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|DotNet_x64Test.Build.0 = Release|x64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|x64.ActiveCfg = Release|x64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|x64.ActiveCfg = Release|x64
|
||||||
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|x64.Build.0 = Release|x64
|
{CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|x64.Build.0 = Release|x64
|
||||||
|
@ -2294,7 +2300,8 @@ Global
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM.ActiveCfg = Debug|Win32
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM64.Build.0 = Debug|ARM64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|DotNet_x64Test.ActiveCfg = Debug|x64
|
||||||
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|DotNet_x64Test.Build.0 = Debug|x64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|x64.ActiveCfg = Debug|x64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|x64.Build.0 = Debug|x64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
@ -2311,7 +2318,8 @@ Global
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM.ActiveCfg = Release|Win32
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM.ActiveCfg = Release|Win32
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM64.ActiveCfg = Release|ARM64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM64.Build.0 = Release|ARM64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|DotNet_x64Test.ActiveCfg = Release|x64
|
||||||
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|DotNet_x64Test.Build.0 = Release|x64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|x64.ActiveCfg = Release|x64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|x64.ActiveCfg = Release|x64
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|x64.Build.0 = Release|x64
|
{48D21369-3D7B-4431-9967-24E81292CF63}.Release|x64.Build.0 = Release|x64
|
||||||
|
@ -2329,7 +2337,8 @@ Global
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM.ActiveCfg = Debug|Win32
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM64.Build.0 = Debug|ARM64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|DotNet_x64Test.ActiveCfg = Debug|x64
|
||||||
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|DotNet_x64Test.Build.0 = Debug|x64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|x64.ActiveCfg = Debug|x64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|x64.Build.0 = Debug|x64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
@ -2346,7 +2355,8 @@ Global
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM.ActiveCfg = Release|Win32
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM64.ActiveCfg = Release|ARM64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM64.Build.0 = Release|ARM64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|DotNet_x64Test.ActiveCfg = Release|x64
|
||||||
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|DotNet_x64Test.Build.0 = Release|x64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|x64.ActiveCfg = Release|x64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|x64.ActiveCfg = Release|x64
|
||||||
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|x64.Build.0 = Release|x64
|
{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|x64.Build.0 = Release|x64
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
||||||
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
||||||
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
||||||
<package id="Microsoft.VCRTForwarders.140" version="1.0.4" targetFramework="native" />
|
<package id="Microsoft.VCRTForwarders.140" version="1.0.4" targetFramework="native" />
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="!Exists('CascadiaPackage_TemporaryKey.pfx')">
|
<PropertyGroup Condition="!Exists('CascadiaPackage_TemporaryKey.pfx')">
|
||||||
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
|
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
|
||||||
<AppxBundle>Never</AppxBundle>
|
<!--<AppxBundle>Never</AppxBundle>-->
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="Exists('CascadiaPackage_TemporaryKey.pfx')">
|
<PropertyGroup Condition="Exists('CascadiaPackage_TemporaryKey.pfx')">
|
||||||
<AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
|
<AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
||||||
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -71,6 +71,7 @@
|
||||||
<Project>{18D09A24-8240-42D6-8CB6-236EEE820263}</Project>
|
<Project>{18D09A24-8240-42D6-8CB6-236EEE820263}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
||||||
|
<Private>true</Private>
|
||||||
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
<package id="vcpkg-cpprestsdk" version="2.10.14" targetFramework="native" />
|
<package id="vcpkg-cpprestsdk" version="2.10.14" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
#include "winrt/Windows.Foundation.Collections.h"
|
#include "winrt/Windows.Foundation.Collections.h"
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
|
|
||||||
|
#include <wrl.h>
|
||||||
|
|
||||||
#include <TraceLoggingProvider.h>
|
#include <TraceLoggingProvider.h>
|
||||||
TRACELOGGING_DECLARE_PROVIDER(g_hTerminalConnectionProvider);
|
TRACELOGGING_DECLARE_PROVIDER(g_hTerminalConnectionProvider);
|
||||||
#include <telemetry/ProjectTelemetry.h>
|
#include <telemetry/ProjectTelemetry.h>
|
||||||
|
|
|
@ -135,55 +135,58 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
// proc, this'll return null. We'll need to instead make a new
|
// proc, this'll return null. We'll need to instead make a new
|
||||||
// DispatcherQueue (on a new thread), so we can use that for throttled
|
// DispatcherQueue (on a new thread), so we can use that for throttled
|
||||||
// functions.
|
// functions.
|
||||||
_dispatcher = winrt::Windows::System::DispatcherQueue::GetForCurrentThread();
|
try
|
||||||
if (!_dispatcher)
|
{
|
||||||
|
//_dispatcher = winrt::Windows::System::DispatcherQueue::GetForCurrentThread();
|
||||||
|
//if (!_dispatcher)
|
||||||
|
//{
|
||||||
|
//auto controller{ winrt::Windows::System::DispatcherQueueController::CreateOnDedicatedThread() };
|
||||||
|
//_dispatcher = controller.DispatcherQueue();
|
||||||
|
//}
|
||||||
|
|
||||||
|
// A few different events should be throttled, so they don't fire absolutely all the time:
|
||||||
|
// * _tsfTryRedrawCanvas: When the cursor position moves, we need to
|
||||||
|
// inform TSF, so it can move the canvas for the composition. We
|
||||||
|
// throttle this so that we're not hopping across the process boundary
|
||||||
|
// every time that the cursor moves.
|
||||||
|
// * _updatePatternLocations: When there's new output, or we scroll the
|
||||||
|
// viewport, we should re-check if there are any visible hyperlinks.
|
||||||
|
// But we don't really need to do this every single time text is
|
||||||
|
// output, we can limit this update to once every 500ms.
|
||||||
|
// * _updateScrollBar: Same idea as the TSF update - we don't _really_
|
||||||
|
// need to hop across the process boundary every time text is output.
|
||||||
|
// We can throttle this to once every 8ms, which will get us out of
|
||||||
|
// the way of the main output & rendering threads.
|
||||||
|
_tsfTryRedrawCanvas = std::make_unique<til::throttled_func_trailing<>>(
|
||||||
|
TsfRedrawInterval,
|
||||||
|
[weakThis = get_weak()]() {
|
||||||
|
if (auto core{ weakThis.get() }; !core->_IsClosing())
|
||||||
|
{
|
||||||
|
core->_CursorPositionChangedHandlers(*core, nullptr);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
_updatePatternLocations = std::make_unique<til::throttled_func_trailing<>>(
|
||||||
|
UpdatePatternLocationsInterval,
|
||||||
|
[weakThis = get_weak()]() {
|
||||||
|
if (auto core{ weakThis.get() }; !core->_IsClosing())
|
||||||
|
{
|
||||||
|
core->UpdatePatternLocations();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
_updateScrollBar = std::make_unique<til::throttled_func_trailing<Control::ScrollPositionChangedArgs>>(
|
||||||
|
ScrollBarUpdateInterval,
|
||||||
|
[weakThis = get_weak()](const auto& update) {
|
||||||
|
if (auto core{ weakThis.get() }; !core->_IsClosing())
|
||||||
|
{
|
||||||
|
core->_ScrollPositionChangedHandlers(*core, update);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
{
|
{
|
||||||
auto controller{ winrt::Windows::System::DispatcherQueueController::CreateOnDedicatedThread() };
|
|
||||||
_dispatcher = controller.DispatcherQueue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// A few different events should be throttled, so they don't fire absolutely all the time:
|
|
||||||
// * _tsfTryRedrawCanvas: When the cursor position moves, we need to
|
|
||||||
// inform TSF, so it can move the canvas for the composition. We
|
|
||||||
// throttle this so that we're not hopping across the process boundary
|
|
||||||
// every time that the cursor moves.
|
|
||||||
// * _updatePatternLocations: When there's new output, or we scroll the
|
|
||||||
// viewport, we should re-check if there are any visible hyperlinks.
|
|
||||||
// But we don't really need to do this every single time text is
|
|
||||||
// output, we can limit this update to once every 500ms.
|
|
||||||
// * _updateScrollBar: Same idea as the TSF update - we don't _really_
|
|
||||||
// need to hop across the process boundary every time text is output.
|
|
||||||
// We can throttle this to once every 8ms, which will get us out of
|
|
||||||
// the way of the main output & rendering threads.
|
|
||||||
_tsfTryRedrawCanvas = std::make_shared<ThrottledFuncTrailing<>>(
|
|
||||||
_dispatcher,
|
|
||||||
TsfRedrawInterval,
|
|
||||||
[weakThis = get_weak()]() {
|
|
||||||
if (auto core{ weakThis.get() }; !core->_IsClosing())
|
|
||||||
{
|
|
||||||
core->_CursorPositionChangedHandlers(*core, nullptr);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
_updatePatternLocations = std::make_shared<ThrottledFuncTrailing<>>(
|
|
||||||
_dispatcher,
|
|
||||||
UpdatePatternLocationsInterval,
|
|
||||||
[weakThis = get_weak()]() {
|
|
||||||
if (auto core{ weakThis.get() }; !core->_IsClosing())
|
|
||||||
{
|
|
||||||
core->UpdatePatternLocations();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
_updateScrollBar = std::make_shared<ThrottledFuncTrailing<Control::ScrollPositionChangedArgs>>(
|
|
||||||
_dispatcher,
|
|
||||||
ScrollBarUpdateInterval,
|
|
||||||
[weakThis = get_weak()](const auto& update) {
|
|
||||||
if (auto core{ weakThis.get() }; !core->_IsClosing())
|
|
||||||
{
|
|
||||||
core->_ScrollPositionChangedHandlers(*core, update);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
UpdateSettings(settings);
|
UpdateSettings(settings);
|
||||||
}
|
}
|
||||||
|
@ -291,6 +294,20 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ControlCore::InitializeWithHwnd(const double actualWidth,
|
||||||
|
const double actualHeight,
|
||||||
|
const double compositionScale,
|
||||||
|
const uint64_t hwnd)
|
||||||
|
{
|
||||||
|
auto i = Initialize(actualWidth, actualHeight, compositionScale);
|
||||||
|
if (i)
|
||||||
|
{
|
||||||
|
auto lock = _terminal->LockForWriting();
|
||||||
|
(void)_renderEngine->SetHwnd(reinterpret_cast<HWND>(hwnd));
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
// Method Description:
|
// Method Description:
|
||||||
// - Tell the renderer to start painting.
|
// - Tell the renderer to start painting.
|
||||||
// - !! IMPORTANT !! Make sure that we've attached our swap chain to an
|
// - !! IMPORTANT !! Make sure that we've attached our swap chain to an
|
||||||
|
@ -415,7 +432,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
// itself - it was initiated by the mouse wheel, or the scrollbar.
|
// itself - it was initiated by the mouse wheel, or the scrollbar.
|
||||||
_terminal->UserScrollViewport(viewTop);
|
_terminal->UserScrollViewport(viewTop);
|
||||||
|
|
||||||
_updatePatternLocations->Run();
|
if (_updatePatternLocations)
|
||||||
|
_updatePatternLocations->operator()();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlCore::AdjustOpacity(const double adjustment)
|
void ControlCore::AdjustOpacity(const double adjustment)
|
||||||
|
@ -1191,7 +1209,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
bufferSize) };
|
bufferSize) };
|
||||||
if (!_inUnitTests)
|
if (!_inUnitTests)
|
||||||
{
|
{
|
||||||
_updateScrollBar->Run(update);
|
if (_updateScrollBar)
|
||||||
|
_updateScrollBar->operator()(update);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1199,14 +1218,16 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
}
|
}
|
||||||
|
|
||||||
// Additionally, start the throttled update of where our links are.
|
// Additionally, start the throttled update of where our links are.
|
||||||
_updatePatternLocations->Run();
|
if (_updatePatternLocations)
|
||||||
|
_updatePatternLocations->operator()();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlCore::_terminalCursorPositionChanged()
|
void ControlCore::_terminalCursorPositionChanged()
|
||||||
{
|
{
|
||||||
// When the buffer's cursor moves, start the throttled func to
|
// When the buffer's cursor moves, start the throttled func to
|
||||||
// eventually dispatch a CursorPositionChanged event.
|
// eventually dispatch a CursorPositionChanged event.
|
||||||
_tsfTryRedrawCanvas->Run();
|
if (_tsfTryRedrawCanvas)
|
||||||
|
_tsfTryRedrawCanvas->operator()();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlCore::_terminalTaskbarProgressChanged()
|
void ControlCore::_terminalTaskbarProgressChanged()
|
||||||
|
@ -1496,7 +1517,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
_terminal->Write(hstr);
|
_terminal->Write(hstr);
|
||||||
|
|
||||||
// Start the throttled update of where our hyperlinks are.
|
// Start the throttled update of where our hyperlinks are.
|
||||||
_updatePatternLocations->Run();
|
if (_updatePatternLocations)
|
||||||
|
_updatePatternLocations->operator()();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method Description:
|
// Method Description:
|
||||||
|
|
|
@ -42,6 +42,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
bool Initialize(const double actualWidth,
|
bool Initialize(const double actualWidth,
|
||||||
const double actualHeight,
|
const double actualHeight,
|
||||||
const double compositionScale);
|
const double compositionScale);
|
||||||
|
bool InitializeWithHwnd(const double actualWidth,
|
||||||
|
const double actualHeight,
|
||||||
|
const double compositionScale, const uint64_t hwnd);
|
||||||
void EnablePainting();
|
void EnablePainting();
|
||||||
|
|
||||||
void UpdateSettings(const IControlSettings& settings);
|
void UpdateSettings(const IControlSettings& settings);
|
||||||
|
@ -211,10 +214,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
double _panelHeight{ 0 };
|
double _panelHeight{ 0 };
|
||||||
double _compositionScale{ 0 };
|
double _compositionScale{ 0 };
|
||||||
|
|
||||||
winrt::Windows::System::DispatcherQueue _dispatcher{ nullptr };
|
std::unique_ptr<til::throttled_func_trailing<>> _tsfTryRedrawCanvas;
|
||||||
std::shared_ptr<ThrottledFuncTrailing<>> _tsfTryRedrawCanvas;
|
std::unique_ptr<til::throttled_func_trailing<>> _updatePatternLocations;
|
||||||
std::shared_ptr<ThrottledFuncTrailing<>> _updatePatternLocations;
|
std::unique_ptr<til::throttled_func_trailing<Control::ScrollPositionChangedArgs>> _updateScrollBar;
|
||||||
std::shared_ptr<ThrottledFuncTrailing<Control::ScrollPositionChangedArgs>> _updateScrollBar;
|
|
||||||
|
|
||||||
winrt::fire_and_forget _asyncCloseConnection();
|
winrt::fire_and_forget _asyncCloseConnection();
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,9 @@ namespace Microsoft.Terminal.Control
|
||||||
Boolean Initialize(Double actualWidth,
|
Boolean Initialize(Double actualWidth,
|
||||||
Double actualHeight,
|
Double actualHeight,
|
||||||
Double compositionScale);
|
Double compositionScale);
|
||||||
|
Boolean InitializeWithHwnd(Double actualWidth,
|
||||||
|
Double actualHeight,
|
||||||
|
Double compositionScale, UInt64 hwnd);
|
||||||
|
|
||||||
void UpdateSettings(IControlSettings settings);
|
void UpdateSettings(IControlSettings settings);
|
||||||
void UpdateAppearance(IControlAppearance appearance);
|
void UpdateAppearance(IControlAppearance appearance);
|
||||||
|
|
429
src/cascadia/TerminalControl/FlatC.cpp
Normal file
429
src/cascadia/TerminalControl/FlatC.cpp
Normal file
|
@ -0,0 +1,429 @@
|
||||||
|
#include "pch.h"
|
||||||
|
#include "FlatC.h"
|
||||||
|
#include "winrt/Microsoft.Terminal.Control.h"
|
||||||
|
#include "winrt/Microsoft.Terminal.Core.h"
|
||||||
|
#include "../TerminalCore/ControlKeyStates.hpp"
|
||||||
|
#include "../types/inc/colorTable.hpp"
|
||||||
|
#include "../inc/DefaultSettings.h"
|
||||||
|
#include <windowsx.h>
|
||||||
|
|
||||||
|
#pragma warning(disable : 4100)
|
||||||
|
|
||||||
|
using namespace winrt::Microsoft::Terminal::Control;
|
||||||
|
using namespace winrt::Microsoft::Terminal::Core;
|
||||||
|
using CKS = ::Microsoft::Terminal::Core::ControlKeyStates;
|
||||||
|
|
||||||
|
static CKS getControlKeyState() noexcept
|
||||||
|
{
|
||||||
|
struct KeyModifier
|
||||||
|
{
|
||||||
|
int vkey;
|
||||||
|
CKS flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr std::array<KeyModifier, 5> modifiers{ {
|
||||||
|
{ VK_RMENU, CKS::RightAltPressed },
|
||||||
|
{ VK_LMENU, CKS::LeftAltPressed },
|
||||||
|
{ VK_RCONTROL, CKS::RightCtrlPressed },
|
||||||
|
{ VK_LCONTROL, CKS::LeftCtrlPressed },
|
||||||
|
{ VK_SHIFT, CKS::ShiftPressed },
|
||||||
|
} };
|
||||||
|
|
||||||
|
CKS flags;
|
||||||
|
|
||||||
|
for (const auto& mod : modifiers)
|
||||||
|
{
|
||||||
|
const auto state = GetKeyState(mod.vkey);
|
||||||
|
const auto isDown = state < 0;
|
||||||
|
|
||||||
|
if (isDown)
|
||||||
|
{
|
||||||
|
flags |= mod.flags;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
static LPCWSTR term_window_class = L"HwndTerminalClass";
|
||||||
|
|
||||||
|
// This magic flag is "documented" at https://msdn.microsoft.com/en-us/library/windows/desktop/ms646301(v=vs.85).aspx
|
||||||
|
// "If the high-order bit is 1, the key is down; otherwise, it is up."
|
||||||
|
static constexpr short KeyPressed{ gsl::narrow_cast<short>(0x8000) };
|
||||||
|
|
||||||
|
static constexpr bool _IsMouseMessage(UINT uMsg)
|
||||||
|
{
|
||||||
|
return uMsg == WM_LBUTTONDOWN || uMsg == WM_LBUTTONUP || uMsg == WM_LBUTTONDBLCLK ||
|
||||||
|
uMsg == WM_MBUTTONDOWN || uMsg == WM_MBUTTONUP || uMsg == WM_MBUTTONDBLCLK ||
|
||||||
|
uMsg == WM_RBUTTONDOWN || uMsg == WM_RBUTTONUP || uMsg == WM_RBUTTONDBLCLK ||
|
||||||
|
uMsg == WM_MOUSEMOVE || uMsg == WM_MOUSEWHEEL || uMsg == WM_MOUSEHWHEEL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "../inc/cppwinrt_utils.h"
|
||||||
|
|
||||||
|
struct NullConnection : public winrt::implements<NullConnection, winrt::Microsoft::Terminal::TerminalConnection::ITerminalConnection>
|
||||||
|
{
|
||||||
|
void Initialize(IInspectable x) {}
|
||||||
|
void Start() {}
|
||||||
|
void WriteInput(winrt::hstring d)
|
||||||
|
{
|
||||||
|
if (_pfnWriteCallback)
|
||||||
|
{
|
||||||
|
_pfnWriteCallback(d.data());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Resize(uint32_t r, uint32_t c) {}
|
||||||
|
void Close() {}
|
||||||
|
winrt::Microsoft::Terminal::TerminalConnection::ConnectionState State() const noexcept { return winrt::Microsoft::Terminal::TerminalConnection::ConnectionState::Closed; }
|
||||||
|
WINRT_CALLBACK(TerminalOutput, winrt::Microsoft::Terminal::TerminalConnection::TerminalOutputHandler);
|
||||||
|
|
||||||
|
TYPED_EVENT(StateChanged, winrt::Microsoft::Terminal::TerminalConnection::ITerminalConnection, winrt::Windows::Foundation::IInspectable);
|
||||||
|
|
||||||
|
public:
|
||||||
|
std::function<void(const wchar_t*)> _pfnWriteCallback{ nullptr };
|
||||||
|
void WireOutput(const wchar_t* data)
|
||||||
|
{
|
||||||
|
_TerminalOutputHandlers(winrt::to_hstring(data));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
struct TerminalSettings : winrt::implements<TerminalSettings, IControlSettings, ICoreSettings, IControlAppearance, ICoreAppearance>
|
||||||
|
{
|
||||||
|
using IFontAxesMap = winrt::Windows::Foundation::Collections::IMap<winrt::hstring, float>;
|
||||||
|
using IFontFeatureMap = winrt::Windows::Foundation::Collections::IMap<winrt::hstring, uint32_t>;
|
||||||
|
TerminalSettings()
|
||||||
|
{
|
||||||
|
const auto campbellSpan = Microsoft::Console::Utils::CampbellColorTable();
|
||||||
|
std::transform(campbellSpan.begin(), campbellSpan.end(), _ColorTable.begin(), [](auto&& color) {
|
||||||
|
return static_cast<winrt::Microsoft::Terminal::Core::Color>(til::color{ color });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
~TerminalSettings() = default;
|
||||||
|
|
||||||
|
winrt::Microsoft::Terminal::Core::Color GetColorTableEntry(int32_t index) noexcept { return _ColorTable.at(index); }
|
||||||
|
|
||||||
|
WINRT_PROPERTY(til::color, DefaultForeground, DEFAULT_FOREGROUND);
|
||||||
|
WINRT_PROPERTY(til::color, DefaultBackground, DEFAULT_BACKGROUND);
|
||||||
|
WINRT_PROPERTY(til::color, SelectionBackground, DEFAULT_FOREGROUND);
|
||||||
|
WINRT_PROPERTY(int32_t, HistorySize, DEFAULT_HISTORY_SIZE);
|
||||||
|
WINRT_PROPERTY(int32_t, InitialRows, 30);
|
||||||
|
WINRT_PROPERTY(int32_t, InitialCols, 80);
|
||||||
|
WINRT_PROPERTY(bool, SnapOnInput, true);
|
||||||
|
WINRT_PROPERTY(bool, AltGrAliasing, true);
|
||||||
|
WINRT_PROPERTY(til::color, CursorColor, DEFAULT_CURSOR_COLOR);
|
||||||
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Core::CursorStyle, CursorShape, winrt::Microsoft::Terminal::Core::CursorStyle::Vintage);
|
||||||
|
WINRT_PROPERTY(uint32_t, CursorHeight, DEFAULT_CURSOR_HEIGHT);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, WordDelimiters, DEFAULT_WORD_DELIMITERS);
|
||||||
|
WINRT_PROPERTY(bool, CopyOnSelect, false);
|
||||||
|
WINRT_PROPERTY(bool, InputServiceWarning, true);
|
||||||
|
WINRT_PROPERTY(bool, FocusFollowMouse, false);
|
||||||
|
WINRT_PROPERTY(bool, TrimBlockSelection, false);
|
||||||
|
WINRT_PROPERTY(bool, DetectURLs, true);
|
||||||
|
WINRT_PROPERTY(winrt::Windows::Foundation::IReference<winrt::Microsoft::Terminal::Core::Color>, TabColor, nullptr);
|
||||||
|
WINRT_PROPERTY(winrt::Windows::Foundation::IReference<winrt::Microsoft::Terminal::Core::Color>, StartingTabColor, nullptr);
|
||||||
|
WINRT_PROPERTY(bool, IntenseIsBright);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, ProfileName);
|
||||||
|
WINRT_PROPERTY(bool, UseAcrylic, false);
|
||||||
|
WINRT_PROPERTY(double, TintOpacity, 0.5);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, Padding, DEFAULT_PADDING);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, FontFace, DEFAULT_FONT_FACE);
|
||||||
|
WINRT_PROPERTY(int32_t, FontSize, DEFAULT_FONT_SIZE);
|
||||||
|
WINRT_PROPERTY(winrt::Windows::UI::Text::FontWeight, FontWeight, winrt::Windows::UI::Text::FontWeight{ 400 });
|
||||||
|
WINRT_PROPERTY(IFontAxesMap, FontAxes);
|
||||||
|
WINRT_PROPERTY(IFontFeatureMap, FontFeatures);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, BackgroundImage);
|
||||||
|
WINRT_PROPERTY(double, BackgroundImageOpacity, 1.0);
|
||||||
|
WINRT_PROPERTY(winrt::Windows::UI::Xaml::Media::Stretch, BackgroundImageStretchMode, winrt::Windows::UI::Xaml::Media::Stretch::UniformToFill);
|
||||||
|
WINRT_PROPERTY(winrt::Windows::UI::Xaml::HorizontalAlignment, BackgroundImageHorizontalAlignment, winrt::Windows::UI::Xaml::HorizontalAlignment::Center);
|
||||||
|
WINRT_PROPERTY(winrt::Windows::UI::Xaml::VerticalAlignment, BackgroundImageVerticalAlignment, winrt::Windows::UI::Xaml::VerticalAlignment::Center);
|
||||||
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Control::IKeyBindings, KeyBindings, nullptr);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, Commandline);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, StartingDirectory);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, StartingTitle);
|
||||||
|
WINRT_PROPERTY(bool, SuppressApplicationTitle);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, EnvironmentVariables);
|
||||||
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Control::ScrollbarState, ScrollState, winrt::Microsoft::Terminal::Control::ScrollbarState::Visible);
|
||||||
|
WINRT_PROPERTY(winrt::Microsoft::Terminal::Control::TextAntialiasingMode, AntialiasingMode, winrt::Microsoft::Terminal::Control::TextAntialiasingMode::Grayscale);
|
||||||
|
WINRT_PROPERTY(bool, RetroTerminalEffect, false);
|
||||||
|
WINRT_PROPERTY(bool, ForceFullRepaintRendering, false);
|
||||||
|
WINRT_PROPERTY(bool, SoftwareRendering, false);
|
||||||
|
WINRT_PROPERTY(bool, ForceVTInput, false);
|
||||||
|
WINRT_PROPERTY(winrt::hstring, PixelShaderPath);
|
||||||
|
WINRT_PROPERTY(bool, IntenseIsBold);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::array<winrt::Microsoft::Terminal::Core::Color, 16> _ColorTable;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HwndTerminal
|
||||||
|
{
|
||||||
|
static LRESULT CALLBACK HwndTerminalWndProc(
|
||||||
|
HWND hwnd,
|
||||||
|
UINT uMsg,
|
||||||
|
WPARAM wParam,
|
||||||
|
LPARAM lParam) noexcept
|
||||||
|
try
|
||||||
|
{
|
||||||
|
#pragma warning(suppress : 26490) // Win32 APIs can only store void*, have to use reinterpret_cast
|
||||||
|
HwndTerminal* terminal = reinterpret_cast<HwndTerminal*>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
|
||||||
|
if (terminal)
|
||||||
|
{
|
||||||
|
return terminal->WindowProc(hwnd, uMsg, wParam, lParam);
|
||||||
|
}
|
||||||
|
return DefWindowProc(hwnd, uMsg, wParam, lParam);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
LOG_CAUGHT_EXCEPTION();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool RegisterTermClass(HINSTANCE hInstance) noexcept
|
||||||
|
{
|
||||||
|
WNDCLASSW wc;
|
||||||
|
if (GetClassInfoW(hInstance, term_window_class, &wc))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
wc.style = 0;
|
||||||
|
wc.lpfnWndProc = HwndTerminal::HwndTerminalWndProc;
|
||||||
|
wc.cbClsExtra = 0;
|
||||||
|
wc.cbWndExtra = 0;
|
||||||
|
wc.hInstance = hInstance;
|
||||||
|
wc.hIcon = nullptr;
|
||||||
|
wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
|
||||||
|
wc.hbrBackground = nullptr;
|
||||||
|
wc.lpszMenuName = nullptr;
|
||||||
|
wc.lpszClassName = term_window_class;
|
||||||
|
|
||||||
|
return RegisterClassW(&wc) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static MouseButtonState MouseButtonStateFromWParam(WPARAM wParam)
|
||||||
|
{
|
||||||
|
MouseButtonState state{};
|
||||||
|
WI_UpdateFlag(state, MouseButtonState::IsLeftButtonDown, WI_IsFlagSet(wParam, MK_LBUTTON));
|
||||||
|
WI_UpdateFlag(state, MouseButtonState::IsMiddleButtonDown, WI_IsFlagSet(wParam, MK_MBUTTON));
|
||||||
|
WI_UpdateFlag(state, MouseButtonState::IsRightButtonDown, WI_IsFlagSet(wParam, MK_RBUTTON));
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Point PointFromLParam(LPARAM lParam)
|
||||||
|
{
|
||||||
|
return { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
|
||||||
|
}
|
||||||
|
|
||||||
|
LRESULT WindowProc(
|
||||||
|
HWND hwnd,
|
||||||
|
UINT uMsg,
|
||||||
|
WPARAM wParam,
|
||||||
|
LPARAM lParam) noexcept
|
||||||
|
{
|
||||||
|
switch (uMsg)
|
||||||
|
{
|
||||||
|
case WM_LBUTTONDOWN:
|
||||||
|
case WM_MBUTTONDOWN:
|
||||||
|
case WM_RBUTTONDOWN:
|
||||||
|
SetCapture(_hwnd.get());
|
||||||
|
_interactivity.PointerPressed(
|
||||||
|
MouseButtonStateFromWParam(wParam),
|
||||||
|
uMsg,
|
||||||
|
std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count(),
|
||||||
|
getControlKeyState(),
|
||||||
|
PointFromLParam(lParam));
|
||||||
|
return 0;
|
||||||
|
case WM_MOUSEMOVE:
|
||||||
|
_interactivity.PointerMoved(
|
||||||
|
MouseButtonStateFromWParam(wParam),
|
||||||
|
WM_MOUSEMOVE,
|
||||||
|
getControlKeyState(),
|
||||||
|
true,
|
||||||
|
PointFromLParam(lParam),
|
||||||
|
true);
|
||||||
|
return 0;
|
||||||
|
case WM_LBUTTONUP:
|
||||||
|
case WM_MBUTTONUP:
|
||||||
|
case WM_RBUTTONUP:
|
||||||
|
ReleaseCapture();
|
||||||
|
_interactivity.PointerReleased(
|
||||||
|
MouseButtonStateFromWParam(wParam),
|
||||||
|
uMsg,
|
||||||
|
getControlKeyState(),
|
||||||
|
PointFromLParam(lParam));
|
||||||
|
return 0;
|
||||||
|
case WM_MOUSEWHEEL:
|
||||||
|
if (_interactivity.MouseWheel(getControlKeyState(), GET_WHEEL_DELTA_WPARAM(wParam), PointFromLParam(lParam), MouseButtonStateFromWParam(wParam)))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_SETFOCUS:
|
||||||
|
_interactivity.GotFocus();
|
||||||
|
break;
|
||||||
|
case WM_KILLFOCUS:
|
||||||
|
_interactivity.LostFocus();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
wil::unique_hwnd _hwnd;
|
||||||
|
|
||||||
|
HwndTerminal(HWND parentHwnd)
|
||||||
|
{
|
||||||
|
HINSTANCE hInstance = wil::GetModuleInstanceHandle();
|
||||||
|
|
||||||
|
if (RegisterTermClass(hInstance))
|
||||||
|
{
|
||||||
|
_hwnd.reset(CreateWindowExW(
|
||||||
|
0,
|
||||||
|
term_window_class,
|
||||||
|
nullptr,
|
||||||
|
WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_VISIBLE,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
parentHwnd,
|
||||||
|
nullptr,
|
||||||
|
hInstance,
|
||||||
|
nullptr));
|
||||||
|
|
||||||
|
#pragma warning(suppress : 26490) // Win32 APIs can only store void*, have to use reinterpret_cast
|
||||||
|
SetWindowLongPtr(_hwnd.get(), GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
_connection = winrt::make_self<NullConnection>();
|
||||||
|
_interactivity = ControlInteractivity{ winrt::make<TerminalSettings>(), *_connection };
|
||||||
|
_core = _interactivity.Core();
|
||||||
|
}
|
||||||
|
|
||||||
|
winrt::com_ptr<NullConnection> _connection;
|
||||||
|
ControlInteractivity _interactivity{ nullptr };
|
||||||
|
ControlCore _core{ nullptr };
|
||||||
|
|
||||||
|
HRESULT SendOutput(LPCWSTR data)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_connection->WireOutput(data);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
CATCH_RETURN()
|
||||||
|
bool _initialized{ false };
|
||||||
|
|
||||||
|
HRESULT RegisterScrollCallback(PSCROLLCB callback) { return S_OK; }
|
||||||
|
HRESULT TriggerResize(_In_ short width, _In_ short height, _Out_ COORD* dimensions)
|
||||||
|
{
|
||||||
|
if (!_initialized)
|
||||||
|
return S_FALSE;
|
||||||
|
SetWindowPos(_hwnd.get(), nullptr, 0, 0, width, height, 0);
|
||||||
|
_core.SizeChanged(width, height);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
HRESULT TriggerResizeWithDimension(_In_ COORD dimensions, _Out_ SIZE* dimensionsInPixels) { return S_OK; }
|
||||||
|
HRESULT CalculateResize(_In_ short width, _In_ short height, _Out_ COORD* dimensions) { return S_OK; }
|
||||||
|
HRESULT DpiChanged(int newDpi)
|
||||||
|
{
|
||||||
|
_core.ScaleChanged((double)newDpi / 96.0);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
HRESULT UserScroll(int viewTop) { return S_OK; }
|
||||||
|
HRESULT ClearSelection() { return S_OK; }
|
||||||
|
HRESULT GetSelection(const wchar_t** out) { return S_OK; }
|
||||||
|
HRESULT IsSelectionActive(bool* out) { return S_OK; }
|
||||||
|
HRESULT SetTheme(TerminalTheme theme, LPCWSTR fontFamily, short fontSize, int newDpi) { return S_OK; }
|
||||||
|
HRESULT RegisterWriteCallback(PWRITECB callback)
|
||||||
|
{
|
||||||
|
_connection->_pfnWriteCallback = callback;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
HRESULT SendKeyEvent(WORD vkey, WORD scanCode, WORD flags, bool keyDown)
|
||||||
|
{
|
||||||
|
_core.TrySendKeyEvent(vkey, scanCode, getControlKeyState(), keyDown);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
HRESULT SendCharEvent(wchar_t ch, WORD flags, WORD scanCode)
|
||||||
|
{
|
||||||
|
_core.SendCharEvent(ch, scanCode, getControlKeyState());
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
HRESULT BlinkCursor()
|
||||||
|
{
|
||||||
|
_core.CursorOn(!_core.CursorOn());
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
HRESULT SetCursorVisible(const bool visible)
|
||||||
|
{
|
||||||
|
_core.CursorOn(visible);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Initialize()
|
||||||
|
{
|
||||||
|
RECT windowRect;
|
||||||
|
GetWindowRect(_hwnd.get(), &windowRect);
|
||||||
|
// BODGY: the +/-1 is because ControlCore will ignore an Initialize with zero size (oops)
|
||||||
|
// becuase in the old days, TermControl would accidentally try to resize the Swap Chain to 0x0 (oops)
|
||||||
|
// and therefore resize the connection to 0x0 (oops)
|
||||||
|
_core.InitializeWithHwnd(windowRect.right - windowRect.left + 1, windowRect.bottom - windowRect.top + 1, 1.0, reinterpret_cast<uint64_t>(_hwnd.get()));
|
||||||
|
_interactivity.Initialize();
|
||||||
|
_core.EnablePainting();
|
||||||
|
_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
__declspec(dllexport) HRESULT _stdcall CreateTerminal(HWND parentHwnd, _Out_ void** hwnd, _Out_ PTERM* terminal)
|
||||||
|
{
|
||||||
|
auto inner = new HwndTerminal{ parentHwnd };
|
||||||
|
*terminal = inner;
|
||||||
|
*hwnd = inner->_hwnd.get();
|
||||||
|
inner->Initialize();
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
__declspec(dllexport) void _stdcall DestroyTerminal(PTERM terminal)
|
||||||
|
{
|
||||||
|
delete (HwndTerminal*)terminal;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate all of the C->C++ bridge functions.
|
||||||
|
#define API_NAME(name) Terminal##name
|
||||||
|
#define GENERATOR_0(name) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM terminal) \
|
||||||
|
{ \
|
||||||
|
return ((HwndTerminal*)(terminal))->name(); \
|
||||||
|
}
|
||||||
|
#define GENERATOR_1(name, t1, a1) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM terminal, t1 a1) \
|
||||||
|
{ \
|
||||||
|
return ((HwndTerminal*)(terminal))->name(a1); \
|
||||||
|
}
|
||||||
|
#define GENERATOR_2(name, t1, a1, t2, a2) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM terminal, t1 a1, t2 a2) \
|
||||||
|
{ \
|
||||||
|
return ((HwndTerminal*)(terminal))->name(a1, a2); \
|
||||||
|
}
|
||||||
|
#define GENERATOR_3(name, t1, a1, t2, a2, t3, a3) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM terminal, t1 a1, t2 a2, t3 a3) \
|
||||||
|
{ \
|
||||||
|
return ((HwndTerminal*)(terminal))->name(a1, a2, a3); \
|
||||||
|
}
|
||||||
|
#define GENERATOR_4(name, t1, a1, t2, a2, t3, a3, t4, a4) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM terminal, t1 a1, t2 a2, t3 a3, t4 a4) \
|
||||||
|
{ \
|
||||||
|
return ((HwndTerminal*)(terminal))->name(a1, a2, a3, a4); \
|
||||||
|
}
|
||||||
|
#define GENERATOR_N(name, t1, a1, t2, a2, t3, a3, t4, a4, MACRO, ...) MACRO
|
||||||
|
#define GENERATOR(...) \
|
||||||
|
GENERATOR_N(__VA_ARGS__, GENERATOR_4, GENERATOR_4, GENERATOR_3, GENERATOR_3, GENERATOR_2, GENERATOR_2, GENERATOR_1, GENERATOR_1, GENERATOR_0) \
|
||||||
|
(__VA_ARGS__)
|
||||||
|
TERMINAL_API_TABLE(GENERATOR)
|
||||||
|
#undef GENERATOR_0
|
||||||
|
#undef GENERATOR_1
|
||||||
|
#undef GENERATOR_2
|
||||||
|
#undef GENERATOR_3
|
||||||
|
#undef GENERATOR_4
|
||||||
|
#undef GENERATOR_N
|
||||||
|
#undef API_NAME
|
77
src/cascadia/TerminalControl/FlatC.h
Normal file
77
src/cascadia/TerminalControl/FlatC.h
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include "../../renderer/base/Renderer.hpp"
|
||||||
|
#include "../../renderer/dx/DxRenderer.hpp"
|
||||||
|
#include "../../cascadia/TerminalCore/Terminal.hpp"
|
||||||
|
#include <UIAutomationCore.h>
|
||||||
|
#include "../../types/IControlAccessibilityInfo.h"
|
||||||
|
#include "../../types/TermControlUiaProvider.hpp"
|
||||||
|
*/
|
||||||
|
|
||||||
|
//using namespace Microsoft::Console::VirtualTerminal;
|
||||||
|
|
||||||
|
// Keep in sync with TerminalTheme.cs
|
||||||
|
typedef struct _TerminalTheme
|
||||||
|
{
|
||||||
|
COLORREF DefaultBackground;
|
||||||
|
COLORREF DefaultForeground;
|
||||||
|
COLORREF DefaultSelectionBackground;
|
||||||
|
float SelectionBackgroundAlpha;
|
||||||
|
uint32_t CursorStyle; // This will be converted to DispatchTypes::CursorStyle (size_t), but C# cannot marshal an enum type and have it fit in a size_t.
|
||||||
|
COLORREF ColorTable[16];
|
||||||
|
} TerminalTheme, *LPTerminalTheme;
|
||||||
|
|
||||||
|
using PTERM = void*;
|
||||||
|
using PSCROLLCB = void(_stdcall*)(int, int, int);
|
||||||
|
using PWRITECB = void(_stdcall*)(const wchar_t*);
|
||||||
|
|
||||||
|
#define TERMINAL_API_TABLE(XX) \
|
||||||
|
XX(SendOutput, LPCWSTR, data) \
|
||||||
|
XX(RegisterScrollCallback, PSCROLLCB, callback) \
|
||||||
|
XX(TriggerResize, _In_ short, width, _In_ short, height, _Out_ COORD*, dimensions) \
|
||||||
|
XX(TriggerResizeWithDimension, _In_ COORD, dimensions, _Out_ SIZE*, dimensionsInPixels) \
|
||||||
|
XX(CalculateResize, _In_ short, width, _In_ short, height, _Out_ COORD*, dimensions) \
|
||||||
|
XX(DpiChanged, int, newDpi) \
|
||||||
|
XX(UserScroll, int, viewTop) \
|
||||||
|
XX(ClearSelection) \
|
||||||
|
XX(GetSelection, const wchar_t**, out) \
|
||||||
|
XX(IsSelectionActive, bool*, out) \
|
||||||
|
XX(SetTheme, TerminalTheme, theme, LPCWSTR, fontFamily, short, fontSize, int, newDpi) \
|
||||||
|
XX(RegisterWriteCallback, PWRITECB, callback) \
|
||||||
|
XX(SendKeyEvent, WORD, vkey, WORD, scanCode, WORD, flags, bool, keyDown) \
|
||||||
|
XX(SendCharEvent, wchar_t, ch, WORD, flags, WORD, scanCode) \
|
||||||
|
XX(BlinkCursor) \
|
||||||
|
XX(SetCursorVisible, const bool, visible)
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#define API_NAME(name) Terminal##name
|
||||||
|
#define GENERATOR_0(name) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM);
|
||||||
|
#define GENERATOR_1(name, t1, a1) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM, t1);
|
||||||
|
#define GENERATOR_2(name, t1, a1, t2, a2) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM, t1, t2);
|
||||||
|
#define GENERATOR_3(name, t1, a1, t2, a2, t3, a3) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM, t1, t2, t3);
|
||||||
|
#define GENERATOR_4(name, t1, a1, t2, a2, t3, a3, t4, a4) \
|
||||||
|
__declspec(dllexport) HRESULT _stdcall API_NAME(name)(PTERM, t1, t2, t3, t4);
|
||||||
|
#define GENERATOR_N(name, t1, a1, t2, a2, t3, a3, t4, a4, MACRO, ...) MACRO
|
||||||
|
#define GENERATOR(...) \
|
||||||
|
GENERATOR_N(__VA_ARGS__, GENERATOR_4, GENERATOR_4, GENERATOR_3, GENERATOR_3, GENERATOR_2, GENERATOR_2, GENERATOR_1, GENERATOR_1, GENERATOR_0) \
|
||||||
|
(__VA_ARGS__)
|
||||||
|
TERMINAL_API_TABLE(GENERATOR)
|
||||||
|
#undef GENERATOR_0
|
||||||
|
#undef GENERATOR_1
|
||||||
|
#undef GENERATOR_2
|
||||||
|
#undef GENERATOR_3
|
||||||
|
#undef GENERATOR_4
|
||||||
|
#undef GENERATOR_N
|
||||||
|
#undef API_NAME
|
||||||
|
|
||||||
|
__declspec(dllexport) HRESULT _stdcall CreateTerminal(HWND parentHwnd, _Out_ void** hwnd, _Out_ PTERM* terminal);
|
||||||
|
__declspec(dllexport) void _stdcall DestroyTerminal(PTERM terminal);
|
||||||
|
};
|
|
@ -1876,7 +1876,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
|
|
||||||
// UWP XAML scrollbars aren't guaranteed to be the same size as the
|
// UWP XAML scrollbars aren't guaranteed to be the same size as the
|
||||||
// ComCtl scrollbars, but it's certainly close enough.
|
// ComCtl scrollbars, but it's certainly close enough.
|
||||||
const auto scrollbarSize = GetSystemMetricsForDpi(SM_CXVSCROLL, dpi);
|
auto scrollbarSize = GetSystemMetrics(SM_CXVSCROLL);
|
||||||
|
scrollbarSize = gsl::narrow_cast<decltype(scrollbarSize)>(scrollbarSize * (dpi / 96));
|
||||||
|
|
||||||
double width = cols * fontSize.X;
|
double width = cols * fontSize.X;
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
<ClCompile Include="pch.cpp">
|
<ClCompile Include="pch.cpp">
|
||||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="FlatC.cpp" />
|
||||||
<ClCompile Include="ControlCore.cpp">
|
<ClCompile Include="ControlCore.cpp">
|
||||||
<DependentUpon>ControlCore.idl</DependentUpon>
|
<DependentUpon>ControlCore.idl</DependentUpon>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -157,6 +158,7 @@
|
||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
||||||
|
<Private>true</Private>
|
||||||
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
|
|
@ -1,3 +1,21 @@
|
||||||
EXPORTS
|
EXPORTS
|
||||||
DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
|
DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
|
||||||
DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
|
DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
|
||||||
|
CreateTerminal
|
||||||
|
DestroyTerminal
|
||||||
|
TerminalSendOutput
|
||||||
|
TerminalRegisterScrollCallback
|
||||||
|
TerminalTriggerResize
|
||||||
|
TerminalTriggerResizeWithDimension
|
||||||
|
TerminalCalculateResize
|
||||||
|
TerminalDpiChanged
|
||||||
|
TerminalUserScroll
|
||||||
|
TerminalClearSelection
|
||||||
|
TerminalGetSelection
|
||||||
|
TerminalIsSelectionActive
|
||||||
|
TerminalSetTheme
|
||||||
|
TerminalRegisterWriteCallback
|
||||||
|
TerminalSendKeyEvent
|
||||||
|
TerminalSendCharEvent
|
||||||
|
TerminalBlinkCursor
|
||||||
|
TerminalSetCursorVisible
|
||||||
|
|
|
@ -82,7 +82,7 @@
|
||||||
|
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>dwrite.lib;dxgi.lib;d2d1.lib;d3d11.lib;shcore.lib;winmm.lib;pathcch.lib;propsys.lib;uiautomationcore.lib;Shlwapi.lib;ntdll.lib;user32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>onecoreuap.lib;dwrite.lib;dxgi.lib;d2d1.lib;d3d11.lib;shcore.lib;winmm.lib;pathcch.lib;propsys.lib;uiautomationcore.lib;Shlwapi.lib;ntdll.lib;user32.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<!--
|
<!--
|
||||||
ControlLib contains a DllMain that we need to force the use of.
|
ControlLib contains a DllMain that we need to force the use of.
|
||||||
If you don't have this, then you'll see an error like
|
If you don't have this, then you'll see an error like
|
||||||
|
@ -98,4 +98,10 @@
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
||||||
|
<!--LATE LATE LATE-->
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -77,7 +77,6 @@ static void EnsureAllResourcesArePresent(const ScopedResourceLoader& loader)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static ScopedResourceLoader GetLibraryResourceLoader()
|
static ScopedResourceLoader GetLibraryResourceLoader()
|
||||||
try
|
|
||||||
{
|
{
|
||||||
ScopedResourceLoader loader{ g_WinRTUtilsLibraryResourceScope };
|
ScopedResourceLoader loader{ g_WinRTUtilsLibraryResourceScope };
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
|
@ -85,7 +84,6 @@ try
|
||||||
#endif
|
#endif
|
||||||
return loader;
|
return loader;
|
||||||
}
|
}
|
||||||
CATCH_FAIL_FAST()
|
|
||||||
|
|
||||||
winrt::hstring GetLibraryResourceString(const std::wstring_view key)
|
winrt::hstring GetLibraryResourceString(const std::wstring_view key)
|
||||||
try
|
try
|
||||||
|
@ -93,7 +91,11 @@ try
|
||||||
static auto loader{ GetLibraryResourceLoader() };
|
static auto loader{ GetLibraryResourceLoader() };
|
||||||
return loader.GetLocalizedString(key);
|
return loader.GetLocalizedString(key);
|
||||||
}
|
}
|
||||||
CATCH_FAIL_FAST()
|
catch (...)
|
||||||
|
{
|
||||||
|
LOG_CAUGHT_EXCEPTION();
|
||||||
|
return winrt::hstring{};
|
||||||
|
}
|
||||||
|
|
||||||
bool HasLibraryResourceWithName(const std::wstring_view key)
|
bool HasLibraryResourceWithName(const std::wstring_view key)
|
||||||
try
|
try
|
||||||
|
@ -101,4 +103,8 @@ try
|
||||||
static auto loader{ GetLibraryResourceLoader() };
|
static auto loader{ GetLibraryResourceLoader() };
|
||||||
return loader.HasResourceWithName(key);
|
return loader.HasResourceWithName(key);
|
||||||
}
|
}
|
||||||
CATCH_FAIL_FAST()
|
catch (...)
|
||||||
|
{
|
||||||
|
LOG_CAUGHT_EXCEPTION();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
||||||
|
<CppWinRTGenerateWindowsMetadata>false</CppWinRTGenerateWindowsMetadata>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
||||||
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
||||||
|
|
|
@ -90,13 +90,13 @@ private:
|
||||||
}
|
}
|
||||||
CATCH_LOG();
|
CATCH_LOG();
|
||||||
|
|
||||||
SetThreadpoolTimerEx(self->_timer.get(), &self->_delay, 0, 0);
|
SetThreadpoolTimer(self->_timer.get(), &self->_delay, 0, 0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetThreadpoolTimerEx(_timer.get(), &_delay, 0, 0);
|
SetThreadpoolTimer(_timer.get(), &_delay, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
||||||
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
<package id="Microsoft.UI.Xaml" version="2.5.0-prerelease.201202003" targetFramework="native" />
|
||||||
<package id="Microsoft.VCRTForwarders.140" version="1.0.4" targetFramework="native" />
|
<package id="Microsoft.VCRTForwarders.140" version="1.0.4" targetFramework="native" />
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
||||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210309.3" targetFramework="native" />
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.210825.3" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
|
@ -179,72 +179,72 @@ namespace Microsoft.Terminal.Wpf
|
||||||
SWP_SHOWWINDOW = 0x0040,
|
SWP_SHOWWINDOW = 0x0040,
|
||||||
}
|
}
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern uint CreateTerminal(IntPtr parent, out IntPtr hwnd, out IntPtr terminal);
|
public static extern uint CreateTerminal(IntPtr parent, out IntPtr hwnd, out IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalSendOutput(IntPtr terminal, string lpdata);
|
public static extern void TerminalSendOutput(IntPtr terminal, string lpdata);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern uint TerminalTriggerResize(IntPtr terminal, short width, short height, out COORD dimensions);
|
public static extern uint TerminalTriggerResize(IntPtr terminal, short width, short height, out COORD dimensions);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern uint TerminalTriggerResizeWithDimension(IntPtr terminal, [MarshalAs(UnmanagedType.Struct)] COORD dimensions, out SIZE dimensionsInPixels);
|
public static extern uint TerminalTriggerResizeWithDimension(IntPtr terminal, [MarshalAs(UnmanagedType.Struct)] COORD dimensions, out SIZE dimensionsInPixels);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern uint TerminalCalculateResize(IntPtr terminal, short width, short height, out COORD dimensions);
|
public static extern uint TerminalCalculateResize(IntPtr terminal, short width, short height, out COORD dimensions);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalDpiChanged(IntPtr terminal, int newDpi);
|
public static extern void TerminalDpiChanged(IntPtr terminal, int newDpi);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalRegisterScrollCallback(IntPtr terminal, [MarshalAs(UnmanagedType.FunctionPtr)]ScrollCallback callback);
|
public static extern void TerminalRegisterScrollCallback(IntPtr terminal, [MarshalAs(UnmanagedType.FunctionPtr)]ScrollCallback callback);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalRegisterWriteCallback(IntPtr terminal, [MarshalAs(UnmanagedType.FunctionPtr)]WriteCallback callback);
|
public static extern void TerminalRegisterWriteCallback(IntPtr terminal, [MarshalAs(UnmanagedType.FunctionPtr)]WriteCallback callback);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalUserScroll(IntPtr terminal, int viewTop);
|
public static extern void TerminalUserScroll(IntPtr terminal, int viewTop);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern uint TerminalStartSelection(IntPtr terminal, COORD cursorPosition, bool altPressed);
|
public static extern uint TerminalStartSelection(IntPtr terminal, COORD cursorPosition, bool altPressed);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern uint TerminalMoveSelection(IntPtr terminal, COORD cursorPosition);
|
public static extern uint TerminalMoveSelection(IntPtr terminal, COORD cursorPosition);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalClearSelection(IntPtr terminal);
|
public static extern void TerminalClearSelection(IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
[return: MarshalAs(UnmanagedType.LPWStr)]
|
[return: MarshalAs(UnmanagedType.LPWStr)]
|
||||||
public static extern string TerminalGetSelection(IntPtr terminal);
|
public static extern string TerminalGetSelection(IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
[return: MarshalAs(UnmanagedType.I1)]
|
[return: MarshalAs(UnmanagedType.I1)]
|
||||||
public static extern bool TerminalIsSelectionActive(IntPtr terminal);
|
public static extern bool TerminalIsSelectionActive(IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void DestroyTerminal(IntPtr terminal);
|
public static extern void DestroyTerminal(IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalSendKeyEvent(IntPtr terminal, ushort vkey, ushort scanCode, ushort flags, bool keyDown);
|
public static extern void TerminalSendKeyEvent(IntPtr terminal, ushort vkey, ushort scanCode, ushort flags, bool keyDown);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalSendCharEvent(IntPtr terminal, char ch, ushort scanCode, ushort flags);
|
public static extern void TerminalSendCharEvent(IntPtr terminal, char ch, ushort scanCode, ushort flags);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalSetTheme(IntPtr terminal, [MarshalAs(UnmanagedType.Struct)] TerminalTheme theme, string fontFamily, short fontSize, int newDpi);
|
public static extern void TerminalSetTheme(IntPtr terminal, [MarshalAs(UnmanagedType.Struct)] TerminalTheme theme, string fontFamily, short fontSize, int newDpi);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalBlinkCursor(IntPtr terminal);
|
public static extern void TerminalBlinkCursor(IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalSetCursorVisible(IntPtr terminal, bool visible);
|
public static extern void TerminalSetCursorVisible(IntPtr terminal, bool visible);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalSetFocus(IntPtr terminal);
|
public static extern void TerminalSetFocus(IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("PublicTerminalCore.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void TerminalKillFocus(IntPtr terminal);
|
public static extern void TerminalKillFocus(IntPtr terminal);
|
||||||
|
|
||||||
[DllImport("user32.dll", SetLastError = true)]
|
[DllImport("user32.dll", SetLastError = true)]
|
||||||
|
|
|
@ -33,7 +33,6 @@ namespace Microsoft.Terminal.Wpf
|
||||||
public TerminalContainer()
|
public TerminalContainer()
|
||||||
{
|
{
|
||||||
this.MessageHook += this.TerminalContainer_MessageHook;
|
this.MessageHook += this.TerminalContainer_MessageHook;
|
||||||
this.GotFocus += this.TerminalContainer_GotFocus;
|
|
||||||
this.Focusable = true;
|
this.Focusable = true;
|
||||||
|
|
||||||
var blinkTime = NativeMethods.GetCaretBlinkTime();
|
var blinkTime = NativeMethods.GetCaretBlinkTime();
|
||||||
|
@ -306,12 +305,6 @@ namespace Microsoft.Terminal.Wpf
|
||||||
character = (char)vKey;
|
character = (char)vKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TerminalContainer_GotFocus(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
e.Handled = true;
|
|
||||||
NativeMethods.SetFocus(this.hwnd);
|
|
||||||
}
|
|
||||||
|
|
||||||
private IntPtr TerminalContainer_MessageHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
|
private IntPtr TerminalContainer_MessageHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
|
||||||
{
|
{
|
||||||
if (hwnd == this.hwnd)
|
if (hwnd == this.hwnd)
|
||||||
|
@ -319,13 +312,10 @@ namespace Microsoft.Terminal.Wpf
|
||||||
switch ((NativeMethods.WindowMessage)msg)
|
switch ((NativeMethods.WindowMessage)msg)
|
||||||
{
|
{
|
||||||
case NativeMethods.WindowMessage.WM_SETFOCUS:
|
case NativeMethods.WindowMessage.WM_SETFOCUS:
|
||||||
NativeMethods.TerminalSetFocus(this.terminal);
|
|
||||||
this.blinkTimer?.Start();
|
this.blinkTimer?.Start();
|
||||||
break;
|
break;
|
||||||
case NativeMethods.WindowMessage.WM_KILLFOCUS:
|
case NativeMethods.WindowMessage.WM_KILLFOCUS:
|
||||||
NativeMethods.TerminalKillFocus(this.terminal);
|
|
||||||
this.blinkTimer?.Stop();
|
this.blinkTimer?.Stop();
|
||||||
NativeMethods.TerminalSetCursorVisible(this.terminal, false);
|
|
||||||
break;
|
break;
|
||||||
case NativeMethods.WindowMessage.WM_MOUSEACTIVATE:
|
case NativeMethods.WindowMessage.WM_MOUSEACTIVATE:
|
||||||
this.Focus();
|
this.Focus();
|
||||||
|
@ -392,10 +382,10 @@ namespace Microsoft.Terminal.Wpf
|
||||||
this.Connection?.Resize((uint)dimensions.Y, (uint)dimensions.X);
|
this.Connection?.Resize((uint)dimensions.Y, (uint)dimensions.X);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NativeMethods.WindowMessage.WM_MOUSEWHEEL:
|
//case NativeMethods.WindowMessage.WM_MOUSEWHEEL:
|
||||||
var delta = (short)(((long)wParam) >> 16);
|
//var delta = (short)(((long)wParam) >> 16);
|
||||||
this.UserScrolled?.Invoke(this, delta);
|
//this.UserScrolled?.Invoke(this, delta);
|
||||||
break;
|
//break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
<Target Name="CollectNativePackContents">
|
<Target Name="CollectNativePackContents">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="$(RepoBinPath)\Win32\$(Configuration)\PublicTerminalCore.dll">
|
<None Include="$(RepoBinPath)\Win32\$(Configuration)\Microsoft.Terminal.Control\Microsoft.Terminal.Control.dll">
|
||||||
<Pack>true</Pack>
|
<Pack>true</Pack>
|
||||||
<PackagePath>runtimes\win-x86\native\</PackagePath>
|
<PackagePath>runtimes\win-x86\native\</PackagePath>
|
||||||
</None>
|
</None>
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
<Pack>true</Pack>
|
<Pack>true</Pack>
|
||||||
<PackagePath>runtimes\win-x86\native\</PackagePath>
|
<PackagePath>runtimes\win-x86\native\</PackagePath>
|
||||||
</None>
|
</None>
|
||||||
<None Include="$(RepoBinPath)\x64\$(Configuration)\PublicTerminalCore.dll">
|
<None Include="$(RepoBinPath)\x64\$(Configuration)\Microsoft.Terminal.Control\Microsoft.Terminal.Control.dll">
|
||||||
<Pack>true</Pack>
|
<Pack>true</Pack>
|
||||||
<PackagePath>runtimes\win-x64\native\</PackagePath>
|
<PackagePath>runtimes\win-x64\native\</PackagePath>
|
||||||
</None>
|
</None>
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="$(SolutionDir)src\api-ms-win-core-synch-l1-2-0\api-ms-win-core-synch-l1-2-0.vcxproj" />
|
<ProjectReference Include="$(SolutionDir)src\api-ms-win-core-synch-l1-2-0\api-ms-win-core-synch-l1-2-0.vcxproj" />
|
||||||
<ProjectReference Include="$(SolutionDir)src\cascadia\PublicTerminalCore\PublicTerminalCore.vcxproj" />
|
<ProjectReference Include="$(SolutionDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj">
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="$(SolutionDir)src\cascadia\WpfTerminalControl\WpfTerminalControl.csproj" />
|
<ProjectReference Include="$(SolutionDir)src\cascadia\WpfTerminalControl\WpfTerminalControl.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -19,7 +21,7 @@
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="$(SolutionDir)bin\$(UnreasonablePlatform)\$(Configuration)\PublicTerminalCore.dll">
|
<Content Include="$(SolutionDir)bin\$(UnreasonablePlatform)\$(Configuration)\Microsoft.Terminal.Control\Microsoft.Terminal.Control.dll">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="$(SolutionDir)bin\$(UnreasonablePlatform)\$(Configuration)\api-ms-win-core-synch-l1-2-0.dll">
|
<Content Include="$(SolutionDir)bin\$(UnreasonablePlatform)\$(Configuration)\api-ms-win-core-synch-l1-2-0.dll">
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
<Import Project="$(MSBuildThisFileDirectory)common.build.post.props" />
|
<Import Project="$(MSBuildThisFileDirectory)common.build.post.props" />
|
||||||
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
<Import Project="$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.targets')" />
|
<Import Project="$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.targets')" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.props'))" />
|
<Error Condition="!Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.props'))" />
|
||||||
<Error Condition="!Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.targets'))" />
|
<Error Condition="!Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<Import Project="..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
<Import Project="..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
||||||
|
|
||||||
<Import Project="$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210309.3\build\native\Microsoft.Windows.CppWinRT.props')" />
|
<Import Project="$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(OpenConsoleDir)\packages\Microsoft.Windows.CppWinRT.2.0.210825.3\build\native\Microsoft.Windows.CppWinRT.props')" />
|
||||||
|
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<CppWinRTHeapEnforcement>AnyValueHereWillDisableTheOptOut</CppWinRTHeapEnforcement>
|
<CppWinRTHeapEnforcement>AnyValueHereWillDisableTheOptOut</CppWinRTHeapEnforcement>
|
||||||
|
@ -55,6 +55,7 @@
|
||||||
-->
|
-->
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_NoWinAPIFamilyApp>true</_NoWinAPIFamilyApp>
|
<_NoWinAPIFamilyApp>true</_NoWinAPIFamilyApp>
|
||||||
|
<_VC_Target_Library_Platform>Desktop</_VC_Target_Library_Platform>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Label="Configuration">
|
<PropertyGroup Label="Configuration">
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
// The compiler doesn't like that. --> Suppress the warning.
|
// The compiler doesn't like that. --> Suppress the warning.
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
#pragma warning(disable: 4324) // structure was padded due to alignment specifier
|
#pragma warning(disable: 4324) // structure was padded due to alignment specifier
|
||||||
#include <wrl.h>
|
//#include <wrl.h>
|
||||||
#pragma warning(pop)
|
#pragma warning(pop)
|
||||||
|
|
||||||
// WEX/TAEF testing
|
// WEX/TAEF testing
|
||||||
|
|
|
@ -172,7 +172,7 @@ namespace til
|
||||||
_func();
|
_func();
|
||||||
}
|
}
|
||||||
|
|
||||||
SetThreadpoolTimerEx(_timer.get(), &_delay, 0, 0);
|
SetThreadpoolTimer(_timer.get(), &_delay, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _trailing_edge()
|
void _trailing_edge()
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
#include <dwrite_2.h>
|
#include <dwrite_2.h>
|
||||||
#include <dwrite_3.h>
|
#include <dwrite_3.h>
|
||||||
|
|
||||||
|
#include <wrl/client.h>
|
||||||
|
#include <wrl/implements.h>
|
||||||
|
|
||||||
// Re-include TIL at the bottom to gain DX superpowers.
|
// Re-include TIL at the bottom to gain DX superpowers.
|
||||||
#include "til.h"
|
#include "til.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue