fix: WCO not working with some window configurations (#45478)

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot] 2025-02-05 14:09:46 -05:00 committed by GitHub
parent d857946d6e
commit 3053e33739
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 10 deletions

View file

@ -700,6 +700,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)

View file

@ -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);