diff --git a/shell/browser/native_window_views_win.cc b/shell/browser/native_window_views_win.cc index 247aeb29faf05..04bbed1a0db1a 100644 --- a/shell/browser/native_window_views_win.cc +++ b/shell/browser/native_window_views_win.cc @@ -9,6 +9,7 @@ #include "shell/browser/browser.h" #include "shell/browser/native_window_views.h" #include "shell/browser/ui/views/root_view.h" +#include "shell/browser/ui/views/win_frame_view.h" #include "shell/common/electron_constants.h" #include "ui/base/win/accessibility_misc_utils.h" #include "ui/display/display.h" @@ -419,7 +420,7 @@ void NativeWindowViews::HandleSizeEvent(WPARAM w_param, LPARAM l_param) { } break; } - case SIZE_RESTORED: + case SIZE_RESTORED: { switch (last_window_state_) { case ui::SHOW_STATE_MAXIMIZED: last_window_state_ = ui::SHOW_STATE_NORMAL; @@ -437,7 +438,15 @@ 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(); + } break; + } } } diff --git a/shell/browser/ui/views/win_caption_button_container.h b/shell/browser/ui/views/win_caption_button_container.h index d9a8fa7ca6f54..90c5973491c8e 100644 --- a/shell/browser/ui/views/win_caption_button_container.h +++ b/shell/browser/ui/views/win_caption_button_container.h @@ -46,6 +46,9 @@ class WinCaptionButtonContainer : public views::View, // time, and both are disabled in tablet UI mode. void UpdateButtons(); + // Reset window button states to STATE_NORMAL. + void ResetWindowControls(); + private: // views::View: void AddedToWidget() override; @@ -55,8 +58,6 @@ class WinCaptionButtonContainer : public views::View, void OnWidgetBoundsChanged(views::Widget* widget, const gfx::Rect& new_bounds) override; - void ResetWindowControls(); - WinFrameView* const frame_view_; WinCaptionButton* const minimize_button_; WinCaptionButton* const maximize_button_;