This PR adds support for always on top mode, via two mechanisms: * The global setting `alwaysOnTop`. When set to true, the window will be created in the "topmost" group of windows. Changing this value will hot-reload whether the window is in the topmost group. * The action `toggleAlwaysOnTop`, which will toggle the `alwaysOnTop` property at runtime. ## Detailed Description of the Pull Request / Additional comments All "topmost" windows maintain an internal z-ordering relative to one another, but they're all always above all other "non-topmost" windows. So multiple Windows Terminal windows which are both `alwaysOnTop` will maintain a z-order relative to one another, but they'll all be on top of all other windows. ## Validation Steps Performed Toggled always on top mode, both in the settings and also at runtime, and verified that it largely did what I expected. Closes #3038
39 lines
1.5 KiB
Plaintext
39 lines
1.5 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
namespace TerminalApp
|
|
{
|
|
delegate void LastTabClosedEventArgs();
|
|
|
|
interface IDialogPresenter
|
|
{
|
|
Windows.Foundation.IAsyncOperation<Windows.UI.Xaml.Controls.ContentDialogResult> ShowDialog(Windows.UI.Xaml.Controls.ContentDialog dialog);
|
|
};
|
|
|
|
[default_interface] runtimeclass TerminalPage : Windows.UI.Xaml.Controls.Page
|
|
{
|
|
TerminalPage();
|
|
|
|
// XAML bound properties
|
|
String ApplicationDisplayName { get; };
|
|
String ApplicationVersion { get; };
|
|
|
|
Boolean FocusMode { get; };
|
|
Boolean Fullscreen { get; };
|
|
Boolean AlwaysOnTop { get; };
|
|
|
|
// We cannot use the default XAML APIs because we want to make sure
|
|
// that there's only one application-global dialog visible at a time,
|
|
// and because of GH#5224.
|
|
IDialogPresenter DialogPresenter;
|
|
|
|
event Windows.Foundation.TypedEventHandler<Object, String> TitleChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, LastTabClosedEventArgs> LastTabClosed;
|
|
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.UIElement> SetTitleBarContent;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> FocusModeChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> FullscreenChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> AlwaysOnTopChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.RoutedEventArgs> Initialized;
|
|
}
|
|
}
|