Browse Source

fix: don't unnecessarily copy draggable regions (#21723)

In some calls to `BrowserWindow::UpdateDraggableRegions` the parameter
`regions` points to object's variable `draggable_regions_` which we later
try to update with data received in the parameter. In these cases coping
is unnecessary. Additionally after this code is executed `draggable_regions_`
would be empty and as a result whole window would be undraggable.

Co-authored-by: CezaryKulakowski <[email protected]>
trop[bot] 5 years ago
parent
commit
7b1117e186
1 changed files with 5 additions and 3 deletions
  1. 5 3
      shell/browser/api/atom_api_browser_window_mac.mm

+ 5 - 3
shell/browser/api/atom_api_browser_window_mac.mm

@@ -101,9 +101,11 @@ void BrowserWindow::UpdateDraggableRegions(
 
   // Draggable regions is implemented by having the whole web view draggable
   // (mouseDownCanMoveWindow) and overlaying regions that are not draggable.
-  draggable_regions_.clear();
-  for (const auto& r : regions)
-    draggable_regions_.push_back(r.Clone());
+  if (&draggable_regions_ != &regions) {
+    draggable_regions_.clear();
+    for (const auto& r : regions)
+      draggable_regions_.push_back(r.Clone());
+  }
   std::vector<gfx::Rect> drag_exclude_rects;
   if (regions.empty()) {
     drag_exclude_rects.push_back(gfx::Rect(0, 0, webViewWidth, webViewHeight));