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)
|
#if BUILDFLAG(IS_WIN)
|
||||||
void HandleSizeEvent(WPARAM w_param, LPARAM l_param);
|
void HandleSizeEvent(WPARAM w_param, LPARAM l_param);
|
||||||
|
void ResetWindowControls();
|
||||||
void SetForwardMouseMessages(bool forward);
|
void SetForwardMouseMessages(bool forward);
|
||||||
static LRESULT CALLBACK SubclassProc(HWND hwnd,
|
static LRESULT CALLBACK SubclassProc(HWND hwnd,
|
||||||
UINT msg,
|
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) {
|
||||||
last_window_state_ = ui::SHOW_STATE_MAXIMIZED;
|
last_window_state_ = ui::SHOW_STATE_MAXIMIZED;
|
||||||
NotifyWindowMaximize();
|
NotifyWindowMaximize();
|
||||||
|
ResetWindowControls();
|
||||||
} else if (w_param == SIZE_MINIMIZED &&
|
} else if (w_param == SIZE_MINIMIZED &&
|
||||||
last_window_state_ != ui::SHOW_STATE_MINIMIZED) {
|
last_window_state_ != ui::SHOW_STATE_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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// If a given window was minimized/maximized and has since been
|
ResetWindowControls();
|
||||||
// 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();
|
|
||||||
}
|
|
||||||
break;
|
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) {
|
void NativeWindowViews::SetForwardMouseMessages(bool forward) {
|
||||||
if (forward && !forwarding_mouse_messages_) {
|
if (forward && !forwarding_mouse_messages_) {
|
||||||
forwarding_mouse_messages_ = true;
|
forwarding_mouse_messages_ = true;
|
||||||
|
|
Loading…
Reference in a new issue