Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Unified Diff: ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc

Issue 2173033002: Make various views SetShape() methods take an unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
index f58bbaa325928ec4f84b24ed524aa1059a694ea3..953349dc24deb1250858b363d792f186e8118a55 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -304,35 +304,35 @@ gfx::Rect DesktopWindowTreeHostWin::GetWorkAreaBoundsInScreen() const {
return display::win::ScreenWin::ScreenToDIPRect(GetHWND(), pixel_bounds);
}
-void DesktopWindowTreeHostWin::SetShape(SkRegion* native_region) {
- if (native_region) {
- // TODO(wez): This would be a lot simpler if we were passed an SkPath.
- // See crbug.com/410593.
- SkRegion* shape = native_region;
- SkRegion device_region;
- if (display::win::GetDPIScale() > 1.0) {
- shape = &device_region;
- const float& scale = display::win::GetDPIScale();
- std::vector<SkIRect> rects;
- for (SkRegion::Iterator it(*native_region); !it.done(); it.next()) {
- const SkIRect& rect = it.rect();
- SkRect scaled_rect =
- SkRect::MakeLTRB(rect.left() * scale, rect.top() * scale,
- rect.right() * scale, rect.bottom() * scale);
- SkIRect rounded_scaled_rect;
- scaled_rect.roundOut(&rounded_scaled_rect);
- rects.push_back(rounded_scaled_rect);
- }
- if (!rects.empty())
- device_region.setRects(&rects[0], rects.size());
- }
+void DesktopWindowTreeHostWin::SetShape(
+ std::unique_ptr<SkRegion> native_region) {
+ if (!native_region) {
+ message_handler_->SetRegion(nullptr);
+ return;
+ }
- message_handler_->SetRegion(gfx::CreateHRGNFromSkRegion(*shape));
- } else {
- message_handler_->SetRegion(NULL);
+ // TODO(wez): This would be a lot simpler if we were passed an SkPath.
+ // See crbug.com/410593.
+ SkRegion* shape = native_region.get();
+ SkRegion device_region;
+ if (display::win::GetDPIScale() > 1.0) {
+ shape = &device_region;
+ const float scale = display::win::GetDPIScale();
+ std::vector<SkIRect> rects;
+ for (SkRegion::Iterator it(*native_region); !it.done(); it.next()) {
+ const SkIRect& rect = it.rect();
+ SkRect scaled_rect =
+ SkRect::MakeLTRB(rect.left() * scale, rect.top() * scale,
+ rect.right() * scale, rect.bottom() * scale);
+ SkIRect rounded_scaled_rect;
+ scaled_rect.roundOut(&rounded_scaled_rect);
+ rects.push_back(rounded_scaled_rect);
+ }
+ if (!rects.empty())
+ device_region.setRects(&rects[0], rects.size());
}
- delete native_region;
+ message_handler_->SetRegion(gfx::CreateHRGNFromSkRegion(*shape));
}
void DesktopWindowTreeHostWin::Activate() {

Powered by Google App Engine
This is Rietveld 408576698