74f11b8203
## Summary of the Pull Request ![603-final](https://user-images.githubusercontent.com/18356694/132585665-afed3210-257a-4fee-9b43-4273a0f5cf69.gif) Adds support for vintage style opacity, on Windows 11+. The API we're using for this exists since the time immemorial, but there's a bug in XAML Islands that prevents it from working right until Windows 11 (which we're working on backporting). Replaces the `acrylicOpacity` setting with `opacity`, which is a uint between 0 and 100 (inclusive), default to 100. `useAcrylic` now controls whether acrylic is used or not. Setting an opacity < 100 with `"useAcrylic": false` will use vintage style opacity. Mouse wheeling adjusts opacity. Whether acrylic is used or not is dependent upon `useAcrylic`. `opacity` will stealthily default to 50 if `useAcrylic:true` is set. ## PR Checklist * [x] Closes #603 * [x] I work here * [x] Tests added/passed * [x] https://github.com/MicrosoftDocs/terminal/pull/416 ## Detailed Description of the Pull Request / Additional comments Opacity was moved to AppearanceConfig. In the future, I have a mind to allow unfocused acrylic, so that'll be important then. ## Validation Steps Performed _just look at it_
92 lines
2.8 KiB
C
92 lines
2.8 KiB
C
/*++
|
|
Copyright (c) Microsoft Corporation
|
|
Licensed under the MIT license.
|
|
|
|
Module Name:
|
|
- pch.h
|
|
|
|
Abstract:
|
|
- Contains external headers to include in the precompile phase of console build process.
|
|
- Avoid including internal project headers. Instead include them only in the classes that need them (helps with test project building).
|
|
--*/
|
|
|
|
#pragma once
|
|
|
|
// Ignore checked iterators warning from VC compiler.
|
|
#define _SCL_SECURE_NO_WARNINGS
|
|
|
|
// Block minwindef.h min/max macros to prevent <algorithm> conflict
|
|
#define NOMINMAX
|
|
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#define NOMCX
|
|
#define NOHELP
|
|
#define NOCOMM
|
|
|
|
#include <unknwn.h>
|
|
|
|
#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
|
|
|
|
#include <windows.h>
|
|
#include <UIAutomation.h>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include <shellscalingapi.h>
|
|
#include <windowsx.h>
|
|
#include <ShObjIdl.h>
|
|
|
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
|
#define BLOCK_TIL
|
|
#include "../inc/LibraryIncludes.h"
|
|
|
|
// This is inexplicable, but for whatever reason, cppwinrt conflicts with the
|
|
// SDK definition of this function, so the only fix is to undef it.
|
|
// from WinBase.h
|
|
// Windows::UI::Xaml::Media::Animation::IStoryboard::GetCurrentTime
|
|
#ifdef GetCurrentTime
|
|
#undef GetCurrentTime
|
|
#endif
|
|
|
|
#include <wil/cppwinrt.h>
|
|
|
|
// Needed just for XamlIslands to work at all:
|
|
#include <winrt/Windows.system.h>
|
|
#include <winrt/Windows.Foundation.Collections.h>
|
|
#include <winrt/Windows.UI.Xaml.Hosting.h>
|
|
#include <windows.ui.xaml.hosting.desktopwindowxamlsource.h>
|
|
|
|
// Additional headers for various xaml features. We need:
|
|
// * Core so we can resume_foreground with CoreDispatcher
|
|
// * Controls for grid
|
|
// * Media for ScaleTransform
|
|
// * ApplicationModel for finding the path to wt.exe
|
|
// * Primitives for Popup (used by GetOpenPopupsForXamlRoot)
|
|
#include <winrt/Windows.UI.Core.h>
|
|
#include <winrt/Windows.UI.Xaml.Controls.h>
|
|
#include <winrt/Windows.UI.Xaml.Controls.Primitives.h>
|
|
#include <winrt/Windows.ui.xaml.media.h>
|
|
#include <winrt/Windows.ApplicationModel.h>
|
|
#include <winrt/Windows.ApplicationModel.Resources.Core.h>
|
|
#include <winrt/Windows.UI.Composition.h>
|
|
|
|
#include <winrt/TerminalApp.h>
|
|
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
|
#include <winrt/Microsoft.Terminal.Remoting.h>
|
|
#include <winrt/Microsoft.Terminal.Control.h>
|
|
|
|
#include <wil/resource.h>
|
|
#include <wil/win32_helpers.h>
|
|
|
|
// Including TraceLogging essentials for the binary
|
|
#include <TraceLoggingProvider.h>
|
|
#include <winmeta.h>
|
|
TRACELOGGING_DECLARE_PROVIDER(g_hWindowsTerminalProvider);
|
|
#include <telemetry/ProjectTelemetry.h>
|
|
#include <TraceLoggingActivity.h>
|
|
|
|
// For commandline argument processing
|
|
#include <shellapi.h>
|
|
#include <processenv.h>
|
|
#include <WinUser.h>
|
|
#include "til.h"
|