| Index: ash/mus/shadow.cc
|
| diff --git a/ash/mus/shadow.cc b/ash/mus/shadow.cc
|
| index 9d6b7183292e86d7facaa2f3240ac5e58b64f459..c215c96a474b15366a6ec88ca7fb50594f0915eb 100644
|
| --- a/ash/mus/shadow.cc
|
| +++ b/ash/mus/shadow.cc
|
| @@ -32,6 +32,10 @@ const int kActiveInteriorInset = 64;
|
| const int kInactiveInteriorInset = 64;
|
| const int kSmallInteriorInset = 4;
|
|
|
| +// Rounded corners are overdrawn on top of the window's content layer,
|
| +// we need to exclude them from the occlusion area.
|
| +const int kRoundedCornerRadius = 2;
|
| +
|
| // Duration for opacity animation in milliseconds.
|
| const int kShadowAnimationDurationMs = 100;
|
|
|
| @@ -194,11 +198,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));
|
| + 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_|. The occlusion area also has to be shrinked to
|
| + // allow rounded corners overdrawing on top of the window's content.
|
| + gfx::Rect content_bounds(
|
| + content_bounds_.x() + interior_inset_ + kRoundedCornerRadius,
|
| + content_bounds_.y() + interior_inset_ + kRoundedCornerRadius,
|
| + content_bounds_.width() - 2 * kRoundedCornerRadius,
|
| + content_bounds_.height() - 2 * kRoundedCornerRadius);
|
| + shadow_layer_->UpdateNinePatchOcclusion(content_bounds);
|
| }
|
|
|
| void Shadow::OnWindowDestroyed(::mus::Window* window) {
|
|
|