From 4cc3b85adc79dc4d65515a8d98390651ccb4754f Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 17:21:40 +0900 Subject: [PATCH] fix: WCO pressed background state updates (#34840) Co-authored-by: Shelley Vohr --- shell/browser/native_window_views_win.cc | 11 ++++++++++- shell/browser/ui/views/win_caption_button_container.h | 5 +++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/shell/browser/native_window_views_win.cc b/shell/browser/native_window_views_win.cc index 52aedf38d62e2..9c0b54393958b 100644 --- a/shell/browser/native_window_views_win.cc +++ b/shell/browser/native_window_views_win.cc @@ -11,6 +11,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/display/display.h" #include "ui/display/win/screen_win.h" @@ -421,7 +422,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; @@ -439,7 +440,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_;