previewing too is good
This commit is contained in:
parent
645610865c
commit
0c33dca1e8
|
@ -49,8 +49,9 @@ namespace winrt::TerminalApp::implementation
|
||||||
switch (_lastPreviewedCommand.ActionAndArgs().Action())
|
switch (_lastPreviewedCommand.ActionAndArgs().Action())
|
||||||
{
|
{
|
||||||
case ShortcutAction::SetColorScheme:
|
case ShortcutAction::SetColorScheme:
|
||||||
|
case ShortcutAction::AdjustOpacity:
|
||||||
{
|
{
|
||||||
_EndPreviewColorScheme();
|
_RunRestorePreviews();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,7 +66,7 @@ namespace winrt::TerminalApp::implementation
|
||||||
// - <none>
|
// - <none>
|
||||||
// Return Value:
|
// Return Value:
|
||||||
// - <none>
|
// - <none>
|
||||||
void TerminalPage::_EndPreviewColorScheme()
|
void TerminalPage::_RunRestorePreviews()
|
||||||
{
|
{
|
||||||
for (const auto& f : _restorePreviewFuncs)
|
for (const auto& f : _restorePreviewFuncs)
|
||||||
{
|
{
|
||||||
|
@ -109,6 +110,30 @@ namespace winrt::TerminalApp::implementation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TerminalPage::_PreviewAdjustOpacity(const Settings::Model::AdjustOpacityArgs& args)
|
||||||
|
{
|
||||||
|
// if (const auto& scheme{ _settings.GlobalSettings().ColorSchemes().TryLookup(args.SchemeName()) })
|
||||||
|
// {
|
||||||
|
// Clear the saved preview funcs because we don't need to add a restore each time
|
||||||
|
// the preview color changes, we only need to be able to restore the last one.
|
||||||
|
_restorePreviewFuncs.clear();
|
||||||
|
|
||||||
|
_ApplyToActiveControls([&](const auto& control) {
|
||||||
|
// Stash a copy of the original scheme.
|
||||||
|
auto originalOpacity{ control.BackgroundOpacity() };
|
||||||
|
|
||||||
|
// Apply the new opacity
|
||||||
|
control.AdjustOpacity(args.Opacity(), args.Relative());
|
||||||
|
|
||||||
|
_restorePreviewFuncs.emplace_back([=]() {
|
||||||
|
// On dismiss:
|
||||||
|
// Don't adjust relatively, just set outright.
|
||||||
|
control.AdjustOpacity(::base::saturated_cast<int>(originalOpacity*100), false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
// Method Description:
|
// Method Description:
|
||||||
// - Handler for the CommandPalette::PreviewAction event. The Command
|
// - Handler for the CommandPalette::PreviewAction event. The Command
|
||||||
// Palette will raise this even when an action is selected, but _not_
|
// Palette will raise this even when an action is selected, but _not_
|
||||||
|
@ -140,6 +165,11 @@ namespace winrt::TerminalApp::implementation
|
||||||
_PreviewColorScheme(args.ActionAndArgs().Args().try_as<SetColorSchemeArgs>());
|
_PreviewColorScheme(args.ActionAndArgs().Args().try_as<SetColorSchemeArgs>());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ShortcutAction::AdjustOpacity:
|
||||||
|
{
|
||||||
|
_PreviewAdjustOpacity(args.ActionAndArgs().Args().try_as<AdjustOpacityArgs>());
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GH#9818 Other ideas for actions that could be preview-able:
|
// GH#9818 Other ideas for actions that could be preview-able:
|
||||||
|
|
|
@ -383,8 +383,9 @@ namespace winrt::TerminalApp::implementation
|
||||||
|
|
||||||
void _PreviewActionHandler(const IInspectable& sender, const Microsoft::Terminal::Settings::Model::Command& args);
|
void _PreviewActionHandler(const IInspectable& sender, const Microsoft::Terminal::Settings::Model::Command& args);
|
||||||
void _EndPreview();
|
void _EndPreview();
|
||||||
void _EndPreviewColorScheme();
|
void _RunRestorePreviews();
|
||||||
void _PreviewColorScheme(const Microsoft::Terminal::Settings::Model::SetColorSchemeArgs& args);
|
void _PreviewColorScheme(const Microsoft::Terminal::Settings::Model::SetColorSchemeArgs& args);
|
||||||
|
void _PreviewAdjustOpacity(const Microsoft::Terminal::Settings::Model::AdjustOpacityArgs& args);
|
||||||
winrt::Microsoft::Terminal::Settings::Model::Command _lastPreviewedCommand{ nullptr };
|
winrt::Microsoft::Terminal::Settings::Model::Command _lastPreviewedCommand{ nullptr };
|
||||||
std::vector<std::function<void()>> _restorePreviewFuncs{};
|
std::vector<std::function<void()>> _restorePreviewFuncs{};
|
||||||
|
|
||||||
|
|
|
@ -24,5 +24,6 @@ namespace Microsoft.Terminal.Control
|
||||||
Microsoft.Terminal.TerminalConnection.ConnectionState ConnectionState { get; };
|
Microsoft.Terminal.TerminalConnection.ConnectionState ConnectionState { get; };
|
||||||
|
|
||||||
Microsoft.Terminal.Core.Scheme ColorScheme { get; set; };
|
Microsoft.Terminal.Core.Scheme ColorScheme { get; set; };
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2658,4 +2658,12 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
_core.AdjustOpacity(opacity, relative);
|
_core.AdjustOpacity(opacity, relative);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - You'd think this should just be "Opacity", but UIElement already
|
||||||
|
// defines an "Opacity", which we're actually not setting at all. We're
|
||||||
|
// not overriding or changing _that_ value. Callers that want the opacity
|
||||||
|
// set by the settings should call this instead.
|
||||||
|
double TermControl::BackgroundOpacity() const
|
||||||
|
{
|
||||||
|
return _core.Opacity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,6 +58,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
int BufferHeight() const;
|
int BufferHeight() const;
|
||||||
|
|
||||||
bool BracketedPasteEnabled() const noexcept;
|
bool BracketedPasteEnabled() const noexcept;
|
||||||
|
|
||||||
|
double BackgroundOpacity() const;
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
void ScrollViewport(int viewTop);
|
void ScrollViewport(int viewTop);
|
||||||
|
|
|
@ -74,5 +74,12 @@ namespace Microsoft.Terminal.Control
|
||||||
String ReadEntireBuffer();
|
String ReadEntireBuffer();
|
||||||
|
|
||||||
void AdjustOpacity(Int32 Opacity, Boolean relative);
|
void AdjustOpacity(Int32 Opacity, Boolean relative);
|
||||||
|
|
||||||
|
// You'd think this should just be "Opacity", but UIElement already
|
||||||
|
// defines an "Opacity", which we're actually not setting at all. We're
|
||||||
|
// not overriding or changing _that_ value. Callers that want the
|
||||||
|
// opacity set by the settings should call this instead.
|
||||||
|
Double BackgroundOpacity { get; };
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue