fix: handle WCO pressed state when going maximized -> minimized (#35070)
This commit is contained in:
parent
182ab9ad76
commit
b42fd1ddca
2 changed files with 14 additions and 7 deletions
|
@ -225,6 +225,7 @@ class NativeWindowViews : public NativeWindow,
|
|||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
void HandleSizeEvent(WPARAM w_param, LPARAM l_param);
|
||||
void ResetWindowControls();
|
||||
void SetForwardMouseMessages(bool forward);
|
||||
static LRESULT CALLBACK SubclassProc(HWND hwnd,
|
||||
UINT msg,
|
||||
|
|
|
@ -415,6 +415,7 @@ void NativeWindowViews::HandleSizeEvent(WPARAM w_param, LPARAM l_param) {
|
|||
last_window_state_ != ui::SHOW_STATE_MAXIMIZED) {
|
||||
last_window_state_ = ui::SHOW_STATE_MAXIMIZED;
|
||||
NotifyWindowMaximize();
|
||||
ResetWindowControls();
|
||||
} else if (w_param == SIZE_MINIMIZED &&
|
||||
last_window_state_ != ui::SHOW_STATE_MINIMIZED) {
|
||||
last_window_state_ = ui::SHOW_STATE_MINIMIZED;
|
||||
|
@ -440,18 +441,23 @@ 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<WinFrameView*>(ncv->frame_view());
|
||||
frame_view->caption_button_container()->ResetWindowControls();
|
||||
}
|
||||
ResetWindowControls();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowViews::ResetWindowControls() {
|
||||
// If a given window was minimized and has since been
|
||||
// unminimized (restored/maximized), ensure the WCO buttons
|
||||
// are reset to their default unpressed state.
|
||||
auto* ncv = widget()->non_client_view();
|
||||
if (IsWindowControlsOverlayEnabled() && ncv) {
|
||||
auto* frame_view = static_cast<WinFrameView*>(ncv->frame_view());
|
||||
frame_view->caption_button_container()->ResetWindowControls();
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowViews::SetForwardMouseMessages(bool forward) {
|
||||
if (forward && !forwarding_mouse_messages_) {
|
||||
forwarding_mouse_messages_ = true;
|
||||
|
|
Loading…
Reference in a new issue