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

This commit is contained in:
trop[bot] 2025-02-06 13:51:39 +01:00 committed by GitHub
parent acfc32f534
commit 7373bde546
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 10 deletions

View file

@ -701,6 +701,15 @@ void NativeWindowViews::Minimize() {
} }
void NativeWindowViews::Restore() { void NativeWindowViews::Restore() {
#if BUILDFLAG(IS_WIN)
if (IsMaximized() && transparent()) {
SetBounds(restore_bounds_, false);
NotifyWindowRestore();
UpdateThickFrame();
return;
}
#endif
widget()->Restore(); widget()->Restore();
#if BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN)

View file

@ -48,27 +48,26 @@ bool HitTestCaptionButton(WinCaptionButton* button, const gfx::Point& point) {
WinCaptionButtonContainer::WinCaptionButtonContainer(WinFrameView* frame_view) WinCaptionButtonContainer::WinCaptionButtonContainer(WinFrameView* frame_view)
: frame_view_(frame_view), : frame_view_(frame_view),
minimize_button_(AddChildView(CreateCaptionButton( minimize_button_(AddChildView(CreateCaptionButton(
base::BindRepeating(&views::Widget::Minimize, base::BindRepeating(&NativeWindow::Minimize,
base::Unretained(frame_view_->frame())), base::Unretained(frame_view_->window())),
frame_view_, frame_view_,
VIEW_ID_MINIMIZE_BUTTON, VIEW_ID_MINIMIZE_BUTTON,
IDS_APP_ACCNAME_MINIMIZE))), IDS_APP_ACCNAME_MINIMIZE))),
maximize_button_(AddChildView(CreateCaptionButton( maximize_button_(AddChildView(CreateCaptionButton(
base::BindRepeating(&views::Widget::Maximize, base::BindRepeating(&NativeWindow::Maximize,
base::Unretained(frame_view_->frame())), base::Unretained(frame_view_->window())),
frame_view_, frame_view_,
VIEW_ID_MAXIMIZE_BUTTON, VIEW_ID_MAXIMIZE_BUTTON,
IDS_APP_ACCNAME_MAXIMIZE))), IDS_APP_ACCNAME_MAXIMIZE))),
restore_button_(AddChildView(CreateCaptionButton( restore_button_(AddChildView(CreateCaptionButton(
base::BindRepeating(&views::Widget::Restore, base::BindRepeating(&NativeWindow::Restore,
base::Unretained(frame_view_->frame())), base::Unretained(frame_view_->window())),
frame_view_, frame_view_,
VIEW_ID_RESTORE_BUTTON, VIEW_ID_RESTORE_BUTTON,
IDS_APP_ACCNAME_RESTORE))), IDS_APP_ACCNAME_RESTORE))),
close_button_(AddChildView(CreateCaptionButton( close_button_(AddChildView(CreateCaptionButton(
base::BindRepeating(&views::Widget::CloseWithReason, base::BindRepeating(&NativeWindow::Close,
base::Unretained(frame_view_->frame()), base::Unretained(frame_view_->window())),
views::Widget::ClosedReason::kCloseButtonClicked),
frame_view_, frame_view_,
VIEW_ID_CLOSE_BUTTON, VIEW_ID_CLOSE_BUTTON,
IDS_APP_ACCNAME_CLOSE))) { IDS_APP_ACCNAME_CLOSE))) {
@ -152,7 +151,7 @@ void WinCaptionButtonContainer::UpdateButtons() {
minimize_button_->SetEnabled(minimizable); minimize_button_->SetEnabled(minimizable);
minimize_button_->SetVisible(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(); const bool maximizable = frame_view_->window()->IsMaximizable();
restore_button_->SetVisible(is_maximized && maximizable); restore_button_->SetVisible(is_maximized && maximizable);
maximize_button_->SetVisible(!is_maximized && maximizable); maximize_button_->SetVisible(!is_maximized && maximizable);