From 7373bde546b5ed6231c415ecb14667210ad2baf3 Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 13:51:39 +0100 Subject: [PATCH] fix: WCO not working with some window configurations (#45477) --- shell/browser/native_window_views.cc | 9 +++++++++ .../ui/views/win_caption_button_container.cc | 19 +++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index d5118ec346a8..e5320308a2dc 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -701,6 +701,15 @@ void NativeWindowViews::Minimize() { } void NativeWindowViews::Restore() { +#if BUILDFLAG(IS_WIN) + if (IsMaximized() && transparent()) { + SetBounds(restore_bounds_, false); + NotifyWindowRestore(); + UpdateThickFrame(); + return; + } +#endif + widget()->Restore(); #if BUILDFLAG(IS_WIN) diff --git a/shell/browser/ui/views/win_caption_button_container.cc b/shell/browser/ui/views/win_caption_button_container.cc index 3987b4e66282..501c9f5f99fd 100644 --- a/shell/browser/ui/views/win_caption_button_container.cc +++ b/shell/browser/ui/views/win_caption_button_container.cc @@ -48,27 +48,26 @@ bool HitTestCaptionButton(WinCaptionButton* button, const gfx::Point& point) { WinCaptionButtonContainer::WinCaptionButtonContainer(WinFrameView* frame_view) : frame_view_(frame_view), minimize_button_(AddChildView(CreateCaptionButton( - base::BindRepeating(&views::Widget::Minimize, - base::Unretained(frame_view_->frame())), + base::BindRepeating(&NativeWindow::Minimize, + base::Unretained(frame_view_->window())), frame_view_, VIEW_ID_MINIMIZE_BUTTON, IDS_APP_ACCNAME_MINIMIZE))), maximize_button_(AddChildView(CreateCaptionButton( - base::BindRepeating(&views::Widget::Maximize, - base::Unretained(frame_view_->frame())), + base::BindRepeating(&NativeWindow::Maximize, + base::Unretained(frame_view_->window())), frame_view_, VIEW_ID_MAXIMIZE_BUTTON, IDS_APP_ACCNAME_MAXIMIZE))), restore_button_(AddChildView(CreateCaptionButton( - base::BindRepeating(&views::Widget::Restore, - base::Unretained(frame_view_->frame())), + base::BindRepeating(&NativeWindow::Restore, + base::Unretained(frame_view_->window())), frame_view_, VIEW_ID_RESTORE_BUTTON, IDS_APP_ACCNAME_RESTORE))), close_button_(AddChildView(CreateCaptionButton( - base::BindRepeating(&views::Widget::CloseWithReason, - base::Unretained(frame_view_->frame()), - views::Widget::ClosedReason::kCloseButtonClicked), + base::BindRepeating(&NativeWindow::Close, + base::Unretained(frame_view_->window())), frame_view_, VIEW_ID_CLOSE_BUTTON, IDS_APP_ACCNAME_CLOSE))) { @@ -152,7 +151,7 @@ void WinCaptionButtonContainer::UpdateButtons() { minimize_button_->SetEnabled(minimizable); minimize_button_->SetVisible(minimizable); - const bool is_maximized = frame_view_->frame()->IsMaximized(); + const bool is_maximized = frame_view_->window()->IsMaximized(); const bool maximizable = frame_view_->window()->IsMaximizable(); restore_button_->SetVisible(is_maximized && maximizable); maximize_button_->SetVisible(!is_maximized && maximizable);