Adds support for the `windowingBehavior` global setting. This setting controls how mutiple instances of `wt` behave in the absence of the `-w` parameter. This setting has three values: * `"useNew"`: (default) Multiple `wt` invocations (without the `-w` param) always create new windows. * `"useAnyExisting"`: When starting a new `wt`, we'll instead default to any existing windows. `wt -w -1` will still create new windows. * `"useExisting"`: Similar to `useAnyExisting`, but limits to windows on the current desktop. The IVirtualDesktopManager interface is _very_ limited. Hence why we have to track the HWNDs manually, and ask if they're on the current desktop. ## Validation Steps Performed I've been playing with it for a week now. References #5000 References projects/5 References #8898 Spec'd in #8135 Closes #2227 Closes https://github.com/microsoft/terminal/projects/5#card-51431448 Closes https://github.com/microsoft/terminal/projects/5#card-51431433
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
#pragma once
|
|
|
|
#include "Launch.g.h"
|
|
#include "LaunchPageNavigationState.g.h"
|
|
#include "Utils.h"
|
|
|
|
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|
{
|
|
struct LaunchPageNavigationState : LaunchPageNavigationStateT<LaunchPageNavigationState>
|
|
{
|
|
public:
|
|
LaunchPageNavigationState(const Model::CascadiaSettings& settings) :
|
|
_Settings{ settings } {}
|
|
|
|
GETSET_PROPERTY(Model::CascadiaSettings, Settings, nullptr)
|
|
};
|
|
|
|
struct Launch : LaunchT<Launch>
|
|
{
|
|
public:
|
|
Launch();
|
|
|
|
void OnNavigatedTo(const winrt::Windows::UI::Xaml::Navigation::NavigationEventArgs& e);
|
|
|
|
IInspectable CurrentDefaultProfile();
|
|
void CurrentDefaultProfile(const IInspectable& value);
|
|
|
|
GETSET_PROPERTY(Editor::LaunchPageNavigationState, State, nullptr);
|
|
|
|
GETSET_BINDABLE_ENUM_SETTING(LaunchMode, Model::LaunchMode, State().Settings().GlobalSettings, LaunchMode);
|
|
GETSET_BINDABLE_ENUM_SETTING(WindowingBehavior, Model::WindowingMode, State().Settings().GlobalSettings, WindowingBehavior);
|
|
};
|
|
}
|
|
|
|
namespace winrt::Microsoft::Terminal::Settings::Editor::factory_implementation
|
|
{
|
|
BASIC_FACTORY(Launch);
|
|
}
|