fix: pend bounds change when moving BrowserWindows (#33288)
* fix: ensure bounds changes apply when moving windows * chore: remove unused queue include
This commit is contained in:
parent
c262eac441
commit
f5112632a3
3 changed files with 18 additions and 0 deletions
|
@ -699,6 +699,13 @@ bool NativeWindowViews::IsFullscreen() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindowViews::SetBounds(const gfx::Rect& bounds, bool animate) {
|
void NativeWindowViews::SetBounds(const gfx::Rect& bounds, bool animate) {
|
||||||
|
#if BUILDFLAG(IS_WIN)
|
||||||
|
if (is_moving_ || is_resizing_) {
|
||||||
|
pending_bounds_change_ = bounds;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
|
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
|
||||||
// On Linux and Windows the minimum and maximum size should be updated with
|
// On Linux and Windows the minimum and maximum size should be updated with
|
||||||
// window size when window is not resizable.
|
// window size when window is not resizable.
|
||||||
|
|
|
@ -303,6 +303,8 @@ class NativeWindowViews : public NativeWindow,
|
||||||
// Whether the window is currently being moved.
|
// Whether the window is currently being moved.
|
||||||
bool is_moving_ = false;
|
bool is_moving_ = false;
|
||||||
|
|
||||||
|
absl::optional<gfx::Rect> pending_bounds_change_;
|
||||||
|
|
||||||
// The color to use as the theme and symbol colors respectively for Window
|
// The color to use as the theme and symbol colors respectively for Window
|
||||||
// Controls Overlay if enabled on Windows.
|
// Controls Overlay if enabled on Windows.
|
||||||
SkColor overlay_button_color_;
|
SkColor overlay_button_color_;
|
||||||
|
|
|
@ -314,6 +314,15 @@ bool NativeWindowViews::PreHandleMSG(UINT message,
|
||||||
NotifyWindowMoved();
|
NotifyWindowMoved();
|
||||||
is_moving_ = false;
|
is_moving_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the user dragged or moved the window during one or more
|
||||||
|
// calls to window.setBounds(), we want to apply the most recent
|
||||||
|
// one once they are done with the move or resize operation.
|
||||||
|
if (pending_bounds_change_.has_value()) {
|
||||||
|
SetBounds(pending_bounds_change_.value(), false /* animate */);
|
||||||
|
pending_bounds_change_.reset();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case WM_MOVING: {
|
case WM_MOVING: {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue