diff --git a/shell/browser/native_window_views.h b/shell/browser/native_window_views.h index 5454aafaec053..6672e3c2c7fcf 100644 --- a/shell/browser/native_window_views.h +++ b/shell/browser/native_window_views.h @@ -225,6 +225,7 @@ class NativeWindowViews : public NativeWindow, #if BUILDFLAG(IS_WIN) void HandleSizeEvent(WPARAM w_param, LPARAM l_param); + void ResetWindowControls(); void SetForwardMouseMessages(bool forward); static LRESULT CALLBACK SubclassProc(HWND hwnd, UINT msg, diff --git a/shell/browser/native_window_views_win.cc b/shell/browser/native_window_views_win.cc index 9c0b54393958b..dc6f089d06bf6 100644 --- a/shell/browser/native_window_views_win.cc +++ b/shell/browser/native_window_views_win.cc @@ -415,6 +415,7 @@ void NativeWindowViews::HandleSizeEvent(WPARAM w_param, LPARAM l_param) { last_window_state_ != ui::SHOW_STATE_MAXIMIZED) { last_window_state_ = ui::SHOW_STATE_MAXIMIZED; NotifyWindowMaximize(); + ResetWindowControls(); } else if (w_param == SIZE_MINIMIZED && last_window_state_ != ui::SHOW_STATE_MINIMIZED) { last_window_state_ = ui::SHOW_STATE_MINIMIZED; @@ -440,18 +441,23 @@ void NativeWindowViews::HandleSizeEvent(WPARAM w_param, LPARAM l_param) { default: break; } - // If a given window was minimized/maximized and has since been - // restored, ensure the WCO buttons are set to normal state. - auto* ncv = widget()->non_client_view(); - if (IsWindowControlsOverlayEnabled() && ncv) { - auto* frame_view = static_cast(ncv->frame_view()); - frame_view->caption_button_container()->ResetWindowControls(); - } + ResetWindowControls(); break; } } } +void NativeWindowViews::ResetWindowControls() { + // If a given window was minimized and has since been + // unminimized (restored/maximized), ensure the WCO buttons + // are reset to their default unpressed state. + auto* ncv = widget()->non_client_view(); + if (IsWindowControlsOverlayEnabled() && ncv) { + auto* frame_view = static_cast(ncv->frame_view()); + frame_view->caption_button_container()->ResetWindowControls(); + } +} + void NativeWindowViews::SetForwardMouseMessages(bool forward) { if (forward && !forwarding_mouse_messages_) { forwarding_mouse_messages_ = true;