From c23201d7642b7a84a8236251e429fe4d2787ead9 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 15 Jun 2022 20:05:17 +0200 Subject: [PATCH] fix: draggable regions updating on bounds change --- shell/browser/native_browser_view_views.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/shell/browser/native_browser_view_views.cc b/shell/browser/native_browser_view_views.cc index 0120f2ac48acd..8c93de9238d28 100644 --- a/shell/browser/native_browser_view_views.cc +++ b/shell/browser/native_browser_view_views.cc @@ -27,6 +27,9 @@ void NativeBrowserViewViews::SetAutoResizeFlags(uint8_t flags) { void NativeBrowserViewViews::UpdateDraggableRegions( const std::vector& regions) { + if (&draggable_regions_ != ®ions) + draggable_regions_ = mojo::Clone(regions); + // We need to snap the regions to the bounds of the current BrowserView. // For example, if an attached BrowserView is draggable but its bounds are // { x: 200, y: 100, width: 300, height: 300 } @@ -35,12 +38,11 @@ void NativeBrowserViewViews::UpdateDraggableRegions( // assumed that the regions begin in the top left corner as they // would for the main client window. auto const offset = GetBounds().OffsetFromOrigin(); - auto snapped_regions = mojo::Clone(regions); - for (auto& snapped_region : snapped_regions) { + draggable_regions_ = mojo::Clone(regions); + for (auto& snapped_region : draggable_regions_) { snapped_region->bounds.Offset(offset); } - - draggable_region_ = DraggableRegionsToSkRegion(snapped_regions); + draggable_region_ = DraggableRegionsToSkRegion(draggable_regions_); } void NativeBrowserViewViews::SetAutoResizeProportions( @@ -128,6 +130,9 @@ void NativeBrowserViewViews::SetBounds(const gfx::Rect& bounds) { auto* view = iwc_view->GetView(); view->SetBoundsRect(bounds); ResetAutoResizeProportions(); + + // Ensure draggable regions are properly updated to reflect new bounds. + UpdateDraggableRegions(draggable_regions_); } gfx::Rect NativeBrowserViewViews::GetBounds() {