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

Unified Diff: mash/wm/shadow.cc

Issue 1937493002: cc: 9patch: fix shadow scaling issue (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix rounded corners Created 4 years, 7 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
« no previous file with comments | « cc/layers/nine_patch_layer_impl_unittest.cc ('k') | ui/compositor/layer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mash/wm/shadow.cc
diff --git a/mash/wm/shadow.cc b/mash/wm/shadow.cc
index 5de5c452fa1296f2f1d320d75f01319949f77724..26262afc54f4b481d8efd9f7c3ccefcfed8c02c1 100644
--- a/mash/wm/shadow.cc
+++ b/mash/wm/shadow.cc
@@ -195,12 +195,23 @@ void Shadow::UpdateLayerBounds() {
int aperture = GetShadowApertureForStyle(style_);
int aperture_x = std::min(aperture, layer_bounds.width() / 2);
int aperture_y = std::min(aperture, layer_bounds.height() / 2);
- shadow_layer_->UpdateNinePatchLayerAperture(
- gfx::Rect(aperture_x, aperture_y,
- image_size_.width() - aperture_x * 2,
- image_size_.height() - aperture_y * 2));
- shadow_layer_->UpdateNinePatchOcclusion(
- content_bounds_ + gfx::Vector2d(interior_inset_, interior_inset_));
+ gfx::Rect aperture_rect(aperture_x, aperture_y,
+ image_size_.width() - aperture_x * 2,
+ image_size_.height() - aperture_y * 2);
+
+ shadow_layer_->UpdateNinePatchLayerAperture(aperture_rect);
+ shadow_layer_->UpdateNinePatchLayerBorder(
+ gfx::Rect(aperture_x, aperture_y, aperture_x * 2, aperture_y * 2));
+
+ // The content bounds in the shadow's layer space are offsetted by
+ // |interior_inset_| and also shrinked by the aperture's rectangle to
+ // include rounding corners overdrawing the window's content.
+ gfx::Rect content_bounds(
+ content_bounds_.x() + interior_inset_ + aperture_rect.width(),
+ content_bounds_.y() + interior_inset_ + aperture_rect.height(),
+ content_bounds_.width() - 2 * aperture_rect.width(),
+ content_bounds_.height() - 2 * aperture_rect.height());
+ shadow_layer_->UpdateNinePatchOcclusion(content_bounds);
}
void Shadow::OnWindowDestroyed(mus::Window* window) {
« no previous file with comments | « cc/layers/nine_patch_layer_impl_unittest.cc ('k') | ui/compositor/layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698