From 059f7701f241a314a049eb5d2c62cf7f4c3b803f Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Wed, 20 Sep 2023 10:21:55 -0500 Subject: [PATCH] Merge PublicTerminalCore into TermControl (#15992) This pull request moves HwndTerminal into Microsoft.Terminal.Control.Lib and removes PublicTerminalCore completely. Microsoft.Terminal.Control.dll now exports the C API from HwndTerminal. This adds ~100kb to Microsoft.Terminal.Control.dll and ~1400kb to the WPF package (per architecture) but with the coming interactivity platform merge it's going to benefit us big time. --- OpenConsole.sln | 33 +--------- build/config/esrp.build.batch.wpf.json | 2 +- .../templates-v2/job-build-project.yml | 2 +- doc/ORGANIZATION.md | 1 - .../PublicTerminalCore.vcxproj | 64 ------------------- .../PublicTerminalCore.vcxproj.filters | 42 ------------ src/cascadia/PublicTerminalCore/pch.cpp | 4 -- src/cascadia/PublicTerminalCore/pch.h | 12 ---- .../HwndTerminal.cpp | 0 .../HwndTerminal.hpp | 0 .../HwndTerminalAutomationPeer.cpp | 0 .../HwndTerminalAutomationPeer.hpp | 0 .../TerminalControlLib.vcxproj | 4 ++ .../dll/Microsoft.Terminal.Control.def | 27 +++++++- .../dll/TerminalControl.vcxproj | 3 +- src/cascadia/TerminalControl/pch.h | 1 + src/cascadia/WinRTUtils/WinRTUtils.vcxproj | 1 + .../WpfTerminalControl/NativeMethods.cs | 54 +++++++--------- .../WpfTerminalControl/TerminalContainer.cs | 29 --------- .../WpfTerminalControl.csproj | 12 ++-- .../WpfTerminalTestNetCore.csproj | 4 +- 21 files changed, 68 insertions(+), 227 deletions(-) delete mode 100644 src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj delete mode 100644 src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj.filters delete mode 100644 src/cascadia/PublicTerminalCore/pch.cpp delete mode 100644 src/cascadia/PublicTerminalCore/pch.h rename src/cascadia/{PublicTerminalCore => TerminalControl}/HwndTerminal.cpp (100%) rename src/cascadia/{PublicTerminalCore => TerminalControl}/HwndTerminal.hpp (100%) rename src/cascadia/{PublicTerminalCore => TerminalControl}/HwndTerminalAutomationPeer.cpp (100%) rename src/cascadia/{PublicTerminalCore => TerminalControl}/HwndTerminalAutomationPeer.hpp (100%) diff --git a/OpenConsole.sln b/OpenConsole.sln index 1a48fa2a00..5c2b55ccd4 100644 --- a/OpenConsole.sln +++ b/OpenConsole.sln @@ -239,8 +239,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{89CDCC EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Types.Unit.Tests", "src\types\ut_types\Types.Unit.Tests.vcxproj", "{34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PublicTerminalCore", "src\cascadia\PublicTerminalCore\PublicTerminalCore.vcxproj", "{84848BFA-931D-42CE-9ADF-01EE54DE7890}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WpfTerminalControl", "src\cascadia\WpfTerminalControl\WpfTerminalControl.csproj", "{376FE273-6B84-4EB5-8B30-8DE9D21B022C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests_TerminalApp", "src\cascadia\ut_app\TerminalApp.UnitTests.vcxproj", "{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}" @@ -334,7 +332,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "src\dep\fmt\fmt.vcxp EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WpfTerminalTestNetCore", "src\cascadia\WpfTerminalTestNetCore\WpfTerminalTestNetCore.csproj", "{1588FD7C-241E-4E7D-9113-43735F3E6BAD}" ProjectSection(ProjectDependencies) = postProject - {84848BFA-931D-42CE-9ADF-01EE54DE7890} = {84848BFA-931D-42CE-9ADF-01EE54DE7890} + {CA5CAD1A-F542-4635-A069-7CAEFB930070} = {CA5CAD1A-F542-4635-A069-7CAEFB930070} {A22EC5F6-7851-4B88-AC52-47249D437A52} = {A22EC5F6-7851-4B88-AC52-47249D437A52} EndProjectSection EndProject @@ -1711,34 +1709,6 @@ Global {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x64.Build.0 = Release|x64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x86.ActiveCfg = Release|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x86.Build.0 = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|x64.ActiveCfg = AuditMode|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|x64.Build.0 = AuditMode|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|x86.Build.0 = AuditMode|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|ARM.ActiveCfg = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|ARM64.Build.0 = Debug|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x64.ActiveCfg = Debug|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x64.Build.0 = Debug|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x86.ActiveCfg = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x86.Build.0 = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|Any CPU.ActiveCfg = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|ARM.ActiveCfg = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|ARM64.ActiveCfg = Release|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|ARM64.Build.0 = Release|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x64.ActiveCfg = Release|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x64.Build.0 = Release|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x86.ActiveCfg = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x86.Build.0 = Release|Win32 {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|Any CPU.ActiveCfg = Release|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM.Build.0 = Debug|Any CPU @@ -2894,7 +2864,6 @@ Global {05500DEF-2294-41E3-AF9A-24E580B82836} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} {1E4A062E-293B-4817-B20D-BF16B979E350} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} - {84848BFA-931D-42CE-9ADF-01EE54DE7890} = {4DAF0299-495E-4CD1-A982-9BAC16A45932} {376FE273-6B84-4EB5-8B30-8DE9D21B022C} = {4DAF0299-495E-4CD1-A982-9BAC16A45932} {CA5CAD1A-9333-4D05-B12A-1905CBF112F9} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E} {CA5CAD1A-9A12-429C-B551-8562EC954746} = {59840756-302F-44DF-AA47-441A9D673202} diff --git a/build/config/esrp.build.batch.wpf.json b/build/config/esrp.build.batch.wpf.json index e9c9af8789..6243204666 100644 --- a/build/config/esrp.build.batch.wpf.json +++ b/build/config/esrp.build.batch.wpf.json @@ -1,7 +1,7 @@ [ { "MatchedPath": [ - "PublicTerminalCore.dll" + "Microsoft.Terminal.Control/Microsoft.Terminal.Control.dll" ], "SigningInfo": { "Operations": [ diff --git a/build/pipelines/templates-v2/job-build-project.yml b/build/pipelines/templates-v2/job-build-project.yml index eda45842bb..39d5020c5c 100644 --- a/build/pipelines/templates-v2/job-build-project.yml +++ b/build/pipelines/templates-v2/job-build-project.yml @@ -114,7 +114,7 @@ jobs: $SignFragments += "wpfdotnet" } If ([bool]::Parse("${{ parameters.buildWPF }}")) { - $BuildTargets += "Terminal\wpf\PublicTerminalCore" + $BuildTargets += "Terminal\Control\Microsoft_Terminal_Control" $SignFragments += "wpf" } If ([bool]::Parse("${{ parameters.buildConPTY }}")) { diff --git a/doc/ORGANIZATION.md b/doc/ORGANIZATION.md index d220c9034e..07a6e41ee7 100644 --- a/doc/ORGANIZATION.md +++ b/doc/ORGANIZATION.md @@ -32,7 +32,6 @@ * `/src/cascadia/TerminalApp` - This DLL represents the implementation of the Windows Terminal application. This includes parsing settings, hosting tabs & panes with Terminals in them, and displaying other UI elements. This DLL is almost entirely UWP-like code, and shouldn't be doing any Win32-like UI work. * `/src/cascadia/WindowsTerminal` - This EXE provides Win32 hosting for the TerminalApp. It will set up XAML islands, and is responsible for drawing the window, either as a standard window or with content in the titlebar (non-client area). * `/src/cascadia/CascadiaPackage` - This is a project for packaging the Windows Terminal and its dependencies into an .appx/.msix for deploying to the machine. - * `/src/cascadia/PublicTerminalCore` - This is a DLL wrapper for the TerminalCore and Renderer, similar to `TermControl`, which exposes some exported functions that so the Terminal can be used from C#. * `/src/cascadia/WpfTerminalControl` - A DLL implementing a WPF version of the Terminal Control. * `/src/host` – The meat of the windows console host. This includes buffer, input, output, windowing, server management, clipboard, and most interactions with the console host window that aren’t stated anywhere else. We’re trying to pull things out that are reusable into other libraries, but it’s a work in progress * `/src/host/lib` – Builds the reusable LIB copy of the host diff --git a/src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj b/src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj deleted file mode 100644 index f8db236b21..0000000000 --- a/src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj +++ /dev/null @@ -1,64 +0,0 @@ - - - - 16.0 - {84848BFA-931D-42CE-9ADF-01EE54DE7890} - Win32Proj - PublicTerminalCore - PublicTerminalCore - DynamicLibrary - - - - - - Create - - - - - - - - - - - - {1cf55140-ef6a-4736-a403-957e4f7430bb} - - - {ca5cad1a-abcd-429c-b551-8562ec954746} - - - {18D09A24-8240-42D6-8CB6-236EEE820263} - - - {8222900C-8B6C-452A-91AC-BE95DB04B95F} - - - {af0a096a-8b3a-4949-81ef-7df8f0fee91f} - - - {48d21369-3d7b-4431-9967-24e81292cf62} - - - {48d21369-3d7b-4431-9967-24e81292cf63} - - - - - pch.h - - - - - - - - - delayimp.lib;Uiautomationcore.lib;onecoreuap.lib;%(AdditionalDependencies) - uiautomationcore.dll;%(DelayLoadDLLs) - - - diff --git a/src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj.filters b/src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj.filters deleted file mode 100644 index 6865448d4a..0000000000 --- a/src/cascadia/PublicTerminalCore/PublicTerminalCore.vcxproj.filters +++ /dev/null @@ -1,42 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - \ No newline at end of file diff --git a/src/cascadia/PublicTerminalCore/pch.cpp b/src/cascadia/PublicTerminalCore/pch.cpp deleted file mode 100644 index 398a99f665..0000000000 --- a/src/cascadia/PublicTerminalCore/pch.cpp +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -#include "pch.h" diff --git a/src/cascadia/PublicTerminalCore/pch.h b/src/cascadia/PublicTerminalCore/pch.h deleted file mode 100644 index 3834f83cde..0000000000 --- a/src/cascadia/PublicTerminalCore/pch.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN // If this is not defined, windows.h includes commdlg.h which defines FindText globally and conflicts with UIAutomation ITextRangeProvider. -#define NOMCX -#define NOHELP -#define NOCOMM -#endif - -#include -#include \ No newline at end of file diff --git a/src/cascadia/PublicTerminalCore/HwndTerminal.cpp b/src/cascadia/TerminalControl/HwndTerminal.cpp similarity index 100% rename from src/cascadia/PublicTerminalCore/HwndTerminal.cpp rename to src/cascadia/TerminalControl/HwndTerminal.cpp diff --git a/src/cascadia/PublicTerminalCore/HwndTerminal.hpp b/src/cascadia/TerminalControl/HwndTerminal.hpp similarity index 100% rename from src/cascadia/PublicTerminalCore/HwndTerminal.hpp rename to src/cascadia/TerminalControl/HwndTerminal.hpp diff --git a/src/cascadia/PublicTerminalCore/HwndTerminalAutomationPeer.cpp b/src/cascadia/TerminalControl/HwndTerminalAutomationPeer.cpp similarity index 100% rename from src/cascadia/PublicTerminalCore/HwndTerminalAutomationPeer.cpp rename to src/cascadia/TerminalControl/HwndTerminalAutomationPeer.cpp diff --git a/src/cascadia/PublicTerminalCore/HwndTerminalAutomationPeer.hpp b/src/cascadia/TerminalControl/HwndTerminalAutomationPeer.hpp similarity index 100% rename from src/cascadia/PublicTerminalCore/HwndTerminalAutomationPeer.hpp rename to src/cascadia/TerminalControl/HwndTerminalAutomationPeer.hpp diff --git a/src/cascadia/TerminalControl/TerminalControlLib.vcxproj b/src/cascadia/TerminalControl/TerminalControlLib.vcxproj index d4560ea14a..151fe35932 100644 --- a/src/cascadia/TerminalControl/TerminalControlLib.vcxproj +++ b/src/cascadia/TerminalControl/TerminalControlLib.vcxproj @@ -69,6 +69,8 @@ TSFInputControl.xaml + + @@ -111,6 +113,8 @@ InteractivityAutomationPeer.idl + + diff --git a/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def b/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def index ba15818ddb..8500c457d6 100644 --- a/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def +++ b/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def @@ -1,3 +1,26 @@ EXPORTS -DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE -DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE + ; WinRT ABI + DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE + DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE + + ; Flat C ABI + CreateTerminal + DestroyTerminal + TerminalBlinkCursor + TerminalCalculateResize + TerminalClearSelection + TerminalDpiChanged + TerminalGetSelection + TerminalIsSelectionActive + TerminalKillFocus + TerminalRegisterScrollCallback + TerminalRegisterWriteCallback + TerminalSendCharEvent + TerminalSendKeyEvent + TerminalSendOutput + TerminalSetCursorVisible + TerminalSetFocus + TerminalSetTheme + TerminalTriggerResize + TerminalTriggerResizeWithDimension + TerminalUserScroll diff --git a/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj b/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj index 82ef3b9165..4116d986ea 100644 --- a/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj +++ b/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj @@ -89,7 +89,8 @@ - dwrite.lib;dxgi.lib;d2d1.lib;d3d11.lib;shcore.lib;winmm.lib;pathcch.lib;propsys.lib;uiautomationcore.lib;Shlwapi.lib;ntdll.lib;user32.lib;shell32.lib;kernel32.lib;%(AdditionalDependencies) + delayimp.lib;Uiautomationcore.lib;onecoreuap.lib;%(AdditionalDependencies) + uiautomationcore.dll;%(DelayLoadDLLs)