From 544452dad41d05b865f1fa1d665397befaa9ec2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nihat=20Uygar=20K=C3=B6seer?= Date: Fri, 6 Sep 2024 18:21:40 +0300 Subject: [PATCH] Add tab color indicator for tab switch menu (CTRL+Tab) (#17820) Added tab color indicator for the tab switch menu. Tab color indicators have the same color as the background color of the tabs. If a tab has the default background color, the indicator is not shown in the tab switch menu. Closes #17465 --- src/cascadia/TerminalApp/CommandPalette.xaml | 7 +++++++ src/cascadia/TerminalApp/TerminalTab.cpp | 3 +++ src/cascadia/TerminalApp/TerminalTabStatus.h | 1 + src/cascadia/TerminalApp/TerminalTabStatus.idl | 1 + src/cascadia/TerminalApp/pch.h | 1 + 5 files changed, 13 insertions(+) diff --git a/src/cascadia/TerminalApp/CommandPalette.xaml b/src/cascadia/TerminalApp/CommandPalette.xaml index 4a3864adb7..eb47534f9c 100644 --- a/src/cascadia/TerminalApp/CommandPalette.xaml +++ b/src/cascadia/TerminalApp/CommandPalette.xaml @@ -205,6 +205,13 @@ Visibility="{x:Bind Item.(local:TabPaletteItem.TabStatus).IsInputBroadcastActive, Mode=OneWay}" /> + + diff --git a/src/cascadia/TerminalApp/TerminalTab.cpp b/src/cascadia/TerminalApp/TerminalTab.cpp index 42339d2fcb..0a01e83d13 100644 --- a/src/cascadia/TerminalApp/TerminalTab.cpp +++ b/src/cascadia/TerminalApp/TerminalTab.cpp @@ -976,6 +976,7 @@ namespace winrt::TerminalApp::implementation // active control in this tab. We'll just recalculate the // current color anyways. tab->_RecalculateAndApplyTabColor(); + tab->_tabStatus.TabColorIndicator(tab->GetTabColor().value_or(Windows::UI::Colors::Transparent())); } }); @@ -1617,6 +1618,7 @@ namespace winrt::TerminalApp::implementation _runtimeTabColor.emplace(color); _RecalculateAndApplyTabColor(); + _tabStatus.TabColorIndicator(color); } // Method Description: @@ -1633,6 +1635,7 @@ namespace winrt::TerminalApp::implementation _runtimeTabColor.reset(); _RecalculateAndApplyTabColor(); + _tabStatus.TabColorIndicator(GetTabColor().value_or(Windows::UI::Colors::Transparent())); } winrt::Windows::UI::Xaml::Media::Brush TerminalTab::_BackgroundBrush() diff --git a/src/cascadia/TerminalApp/TerminalTabStatus.h b/src/cascadia/TerminalApp/TerminalTabStatus.h index d500de325d..8d1d015193 100644 --- a/src/cascadia/TerminalApp/TerminalTabStatus.h +++ b/src/cascadia/TerminalApp/TerminalTabStatus.h @@ -20,6 +20,7 @@ namespace winrt::TerminalApp::implementation WINRT_OBSERVABLE_PROPERTY(bool, IsReadOnlyActive, PropertyChanged.raise); WINRT_OBSERVABLE_PROPERTY(uint32_t, ProgressValue, PropertyChanged.raise); WINRT_OBSERVABLE_PROPERTY(bool, IsInputBroadcastActive, PropertyChanged.raise); + WINRT_OBSERVABLE_PROPERTY(winrt::Windows::UI::Color, TabColorIndicator, PropertyChanged.raise); }; } diff --git a/src/cascadia/TerminalApp/TerminalTabStatus.idl b/src/cascadia/TerminalApp/TerminalTabStatus.idl index 5dc69ffe59..d5664c76c6 100644 --- a/src/cascadia/TerminalApp/TerminalTabStatus.idl +++ b/src/cascadia/TerminalApp/TerminalTabStatus.idl @@ -15,5 +15,6 @@ namespace TerminalApp UInt32 ProgressValue { get; set; }; Boolean IsReadOnlyActive { get; set; }; Boolean IsInputBroadcastActive { get; set; }; + Windows.UI.Color TabColorIndicator { get; set; }; } } diff --git a/src/cascadia/TerminalApp/pch.h b/src/cascadia/TerminalApp/pch.h index d5e840a7b7..ec2655d349 100644 --- a/src/cascadia/TerminalApp/pch.h +++ b/src/cascadia/TerminalApp/pch.h @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include