@@ -89,6 +89,18 @@ namespace winrt::TerminalApp::implementation
8989 CloseClick.raise (*this , e);
9090 }
9191
92+ bool MinMaxCloseControl::Focused () const
93+ {
94+ return _focused;
95+ }
96+
97+ void MinMaxCloseControl::Focused (bool focused)
98+ {
99+ _focused = focused;
100+
101+ ReleaseButtons ();
102+ }
103+
92104 void MinMaxCloseControl::SetWindowVisualState (WindowVisualState visualState)
93105 {
94106 // Look up the heights we should use for the caption buttons from our
@@ -170,25 +182,25 @@ namespace winrt::TerminalApp::implementation
170182 // animate the fade in/out transition between colors.
171183 case CaptionButton::Minimize:
172184 VisualStateManager::GoToState (MinimizeButton (), L" PointerOver" , true );
173- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
174- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
185+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
186+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
175187
176188 _displayToolTip->Run (MinimizeButton ());
177189 closeToolTipForButton (MaximizeButton ());
178190 closeToolTipForButton (CloseButton ());
179191 break ;
180192 case CaptionButton::Maximize:
181- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
193+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
182194 VisualStateManager::GoToState (MaximizeButton (), L" PointerOver" , true );
183- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
195+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
184196
185197 closeToolTipForButton (MinimizeButton ());
186198 _displayToolTip->Run (MaximizeButton ());
187199 closeToolTipForButton (CloseButton ());
188200 break ;
189201 case CaptionButton::Close:
190- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
191- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
202+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
203+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
192204 VisualStateManager::GoToState (CloseButton (), L" PointerOver" , true );
193205
194206 closeToolTipForButton (MinimizeButton ());
@@ -211,17 +223,17 @@ namespace winrt::TerminalApp::implementation
211223 {
212224 case CaptionButton::Minimize:
213225 VisualStateManager::GoToState (MinimizeButton (), L" Pressed" , true );
214- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
215- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
226+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
227+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
216228 break ;
217229 case CaptionButton::Maximize:
218- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
230+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
219231 VisualStateManager::GoToState (MaximizeButton (), L" Pressed" , true );
220- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
232+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
221233 break ;
222234 case CaptionButton::Close:
223- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
224- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
235+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
236+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
225237 VisualStateManager::GoToState (CloseButton (), L" Pressed" , true );
226238 break ;
227239 }
@@ -234,14 +246,21 @@ namespace winrt::TerminalApp::implementation
234246 void MinMaxCloseControl::ReleaseButtons ()
235247 {
236248 _displayToolTip->Run (nullptr );
237- VisualStateManager::GoToState (MinimizeButton (), L" Normal " , true );
238- VisualStateManager::GoToState (MaximizeButton (), L" Normal " , true );
239- VisualStateManager::GoToState (CloseButton (), L" Normal " , true );
249+ VisualStateManager::GoToState (MinimizeButton (), _normalState () , true );
250+ VisualStateManager::GoToState (MaximizeButton (), _normalState () , true );
251+ VisualStateManager::GoToState (CloseButton (), _normalState () , true );
240252
241253 closeToolTipForButton (MinimizeButton ());
242254 closeToolTipForButton (MaximizeButton ());
243255 closeToolTipForButton (CloseButton ());
244256
245257 _lastPressedButton = std::nullopt ;
246258 }
259+
260+ const winrt::param::hstring& MinMaxCloseControl::_normalState () const
261+ {
262+ static const winrt::param::hstring normal = L" Normal" ;
263+ static const winrt::param::hstring unfocused = L" Unfocused" ;
264+ return (_focused ? normal : unfocused);
265+ }
247266}
0 commit comments