diff --git a/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.cpp b/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.cpp index fef533a8f5..dc42879fac 100644 --- a/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.cpp +++ b/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.cpp @@ -167,6 +167,17 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation } } + winrt::Windows::UI::Xaml::Media::Brush ColorSchemeViewModel::MaybeContrastingColor(winrt::Windows::UI::Color color) + { + winrt::Windows::UI::Xaml::Media::SolidColorBrush scb{}; + scb.Color(color); + if (color == BackgroundColor().Color()) + { + scb.Color(ForegroundColor().Color()); + } + return scb; + } + ColorTableEntry::ColorTableEntry(uint8_t index, Windows::UI::Color color) { static const std::array TableColorNames = { diff --git a/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.h b/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.h index 45d3983f9a..c564f11b99 100644 --- a/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.h +++ b/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.h @@ -40,6 +40,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // DON'T YOU DARE ADD A `WINRT_CALLBACK(PropertyChanged` TO A CLASS DERIVED FROM ViewModelHelper. Do this instead: using ViewModelHelper::PropertyChanged; + winrt::Windows::UI::Xaml::Media::Brush MaybeContrastingColor(winrt::Windows::UI::Color color); WINRT_PROPERTY(Windows::Foundation::Collections::IVector, NonBrightColorTable, nullptr); WINRT_PROPERTY(Windows::Foundation::Collections::IVector, BrightColorTable, nullptr); diff --git a/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.idl b/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.idl index 9ad129b228..8838524901 100644 --- a/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.idl +++ b/src/cascadia/TerminalSettingsEditor/ColorSchemeViewModel.idl @@ -25,6 +25,8 @@ namespace Microsoft.Terminal.Settings.Editor ColorTableEntry CursorColor; ColorTableEntry SelectionBackgroundColor; + Windows.UI.Xaml.Media.Brush MaybeContrastingColor(Windows.UI.Color color); + void DeleteConfirmation_Click(IInspectable sender, Windows.UI.Xaml.RoutedEventArgs args); void SetAsDefault_Click(IInspectable sender, Windows.UI.Xaml.RoutedEventArgs args); void Duplicate_Click(IInspectable sender, Windows.UI.Xaml.RoutedEventArgs args); diff --git a/src/cascadia/TerminalSettingsEditor/ColorSchemes.xaml b/src/cascadia/TerminalSettingsEditor/ColorSchemes.xaml index 8e94b9f22f..9ae5726e98 100644 --- a/src/cascadia/TerminalSettingsEditor/ColorSchemes.xaml +++ b/src/cascadia/TerminalSettingsEditor/ColorSchemes.xaml @@ -21,10 +21,12 @@ - +