@@ -88,6 +88,18 @@ namespace winrt::TerminalApp::implementation
8888 CloseClick.raise (*this , e);
8989 }
9090
91+ bool MinMaxCloseControl::Focused () const
92+ {
93+ return _focused;
94+ }
95+
96+ void MinMaxCloseControl::Focused (bool focused)
97+ {
98+ _focused = focused;
99+
100+ ReleaseButtons ();
101+ }
102+
91103 void MinMaxCloseControl::SetWindowVisualState (WindowVisualState visualState)
92104 {
93105 // Look up the heights we should use for the caption buttons from our
@@ -169,25 +181,25 @@ namespace winrt::TerminalApp::implementation
169181 // animate the fade in/out transition between colors.
170182 case CaptionButton::Minimize:
171183 VisualStateManager::GoToState (MinimizeButton (), L" PointerOver" , true );
172- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
173- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
184+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
185+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
174186
175187 _displayToolTip->Run (MinimizeButton ());
176188 closeToolTipForButton (MaximizeButton ());
177189 closeToolTipForButton (CloseButton ());
178190 break ;
179191 case CaptionButton::Maximize:
180- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
192+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
181193 VisualStateManager::GoToState (MaximizeButton (), L" PointerOver" , true );
182- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
194+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
183195
184196 closeToolTipForButton (MinimizeButton ());
185197 _displayToolTip->Run (MaximizeButton ());
186198 closeToolTipForButton (CloseButton ());
187199 break ;
188200 case CaptionButton::Close:
189- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
190- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
201+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
202+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
191203 VisualStateManager::GoToState (CloseButton (), L" PointerOver" , true );
192204
193205 closeToolTipForButton (MinimizeButton ());
@@ -210,17 +222,17 @@ namespace winrt::TerminalApp::implementation
210222 {
211223 case CaptionButton::Minimize:
212224 VisualStateManager::GoToState (MinimizeButton (), L" Pressed" , true );
213- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
214- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
225+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
226+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
215227 break ;
216228 case CaptionButton::Maximize:
217- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
229+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
218230 VisualStateManager::GoToState (MaximizeButton (), L" Pressed" , true );
219- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
231+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
220232 break ;
221233 case CaptionButton::Close:
222- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
223- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
234+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
235+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
224236 VisualStateManager::GoToState (CloseButton (), L" Pressed" , true );
225237 break ;
226238 }
@@ -233,14 +245,21 @@ namespace winrt::TerminalApp::implementation
233245 void MinMaxCloseControl::ReleaseButtons ()
234246 {
235247 _displayToolTip->Run (nullptr );
236- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
237- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
238- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
248+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
249+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
250+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
239251
240252 closeToolTipForButton (MinimizeButton ());
241253 closeToolTipForButton (MaximizeButton ());
242254 closeToolTipForButton (CloseButton ());
243255
244256 _lastPressedButton = std::nullopt ;
245257 }
258+
259+ const winrt::param::hstring& MinMaxCloseControl::_normalState () const
260+ {
261+ static const winrt::param::hstring normal = L" Normal" ;
262+ static const winrt::param::hstring unfocused = L" Unfocused" ;
263+ return (_focused ? normal : unfocused);
264+ }
246265}
0 commit comments