| Index: ash/shelf/shelf_widget.cc
|
| diff --git a/ash/shelf/shelf_widget.cc b/ash/shelf/shelf_widget.cc
|
| index 8dc737ab542a732fc0d6b0bb960921e0854449a8..a4de02568014d0cd8d18e6c3232d2b82513d661b 100644
|
| --- a/ash/shelf/shelf_widget.cc
|
| +++ b/ash/shelf/shelf_widget.cc
|
| @@ -46,7 +46,6 @@ const int kDimAlpha = 128;
|
| // The time to dim and un-dim.
|
| const int kTimeToDimMs = 3000; // Slow in dimming.
|
| const int kTimeToUnDimMs = 200; // Fast in activating.
|
| -const int kTimeToSwitchBackgroundMs = 1000;
|
|
|
| // Class used to slightly dim shelf items when maximized and visible.
|
| class DimmerView : public views::View,
|
| @@ -145,7 +144,7 @@ DimmerView::DimmerView(ash::ShelfWidget* shelf_widget,
|
| // Make sure it is undimmed at the beginning and then fire off the dimming
|
| // animation.
|
| background_animator_.SetPaintsBackground(false,
|
| - ash::internal::BackgroundAnimator::CHANGE_IMMEDIATE);
|
| + ash::BACKGROUND_CHANGE_IMMEDIATE);
|
| SetHovered(false);
|
| }
|
|
|
| @@ -161,8 +160,7 @@ void DimmerView::SetHovered(bool hovered) {
|
| background_animator_.SetDuration(hovered ? kTimeToUnDimMs : kTimeToDimMs);
|
| background_animator_.SetPaintsBackground(!hovered,
|
| disable_dimming_animations_for_test_ ?
|
| - ash::internal::BackgroundAnimator::CHANGE_IMMEDIATE :
|
| - ash::internal::BackgroundAnimator::CHANGE_ANIMATE);
|
| + ash::BACKGROUND_CHANGE_IMMEDIATE : ash::BACKGROUND_CHANGE_ANIMATE);
|
| }
|
|
|
| void DimmerView::ForceUndimming(bool force) {
|
| @@ -391,22 +389,55 @@ void ShelfWidget::DelegateView::OnPaintBackground(gfx::Canvas* canvas) {
|
| SkBitmapOperations::ROTATION_90_CW,
|
| SkBitmapOperations::ROTATION_270_CW,
|
| SkBitmapOperations::ROTATION_180_CW));
|
| -
|
| - gfx::Rect black_rect =
|
| - shelf_->shelf_layout_manager()->SelectValueForShelfAlignment(
|
| - gfx::Rect(0, height() - kNumBlackPixels, width(), kNumBlackPixels),
|
| - gfx::Rect(0, 0, kNumBlackPixels, height()),
|
| - gfx::Rect(width() - kNumBlackPixels, 0, kNumBlackPixels, height()),
|
| - gfx::Rect(0, 0, width(), kNumBlackPixels));
|
| -
|
| + const gfx::Rect dock_bounds(shelf_->shelf_layout_manager()->dock_bounds());
|
| SkPaint paint;
|
| paint.setAlpha(alpha_);
|
| canvas->DrawImageInt(
|
| launcher_background,
|
| 0, 0, launcher_background.width(), launcher_background.height(),
|
| - 0, 0, width(), height(),
|
| + (SHELF_ALIGNMENT_BOTTOM == shelf_->GetAlignment() &&
|
| + dock_bounds.x() == 0 && dock_bounds.width() > 0) ?
|
| + dock_bounds.width() : 0, 0,
|
| + SHELF_ALIGNMENT_BOTTOM == shelf_->GetAlignment() ?
|
| + width() - dock_bounds.width() : width(), height(),
|
| false,
|
| paint);
|
| + if (SHELF_ALIGNMENT_BOTTOM == shelf_->GetAlignment() &&
|
| + dock_bounds.width() > 0) {
|
| + // The part of the shelf background that is in the corner below the docked
|
| + // windows close to the work area is an arched gradient that blends
|
| + // vertically oriented docked background and horizontal shelf.
|
| + gfx::ImageSkia launcher_corner =
|
| + *rb.GetImageSkiaNamed(IDR_AURA_LAUNCHER_CORNER);
|
| + if (dock_bounds.x() == 0) {
|
| + launcher_corner = gfx::ImageSkiaOperations::CreateRotatedImage(
|
| + launcher_corner, SkBitmapOperations::ROTATION_90_CW);
|
| + }
|
| + canvas->DrawImageInt(
|
| + launcher_corner,
|
| + 0, 0, launcher_corner.width(), launcher_corner.height(),
|
| + dock_bounds.x() > 0 ? dock_bounds.x() : dock_bounds.width() - height(),
|
| + 0,
|
| + height(), height(),
|
| + false,
|
| + paint);
|
| + // The part of the shelf background that is just below the docked windows
|
| + // is drawn using the last (lowest) 1-pixel tall strip of the image asset.
|
| + // This avoids showing the border 3D shadow between the shelf and the dock.
|
| + canvas->DrawImageInt(
|
| + launcher_background,
|
| + 0, launcher_background.height() - 1, launcher_background.width(), 1,
|
| + dock_bounds.x() > 0 ? dock_bounds.x() + height() : 0, 0,
|
| + dock_bounds.width() - height(), height(),
|
| + false,
|
| + paint);
|
| + }
|
| + gfx::Rect black_rect =
|
| + shelf_->shelf_layout_manager()->SelectValueForShelfAlignment(
|
| + gfx::Rect(0, height() - kNumBlackPixels, width(), kNumBlackPixels),
|
| + gfx::Rect(0, 0, kNumBlackPixels, height()),
|
| + gfx::Rect(width() - kNumBlackPixels, 0, kNumBlackPixels, height()),
|
| + gfx::Rect(0, 0, width(), kNumBlackPixels));
|
| canvas->FillRect(black_rect, SK_ColorBLACK);
|
| }
|
|
|
| @@ -521,12 +552,12 @@ ShelfWidget::~ShelfWidget() {
|
|
|
| void ShelfWidget::SetPaintsBackground(
|
| ShelfBackgroundType background_type,
|
| - internal::BackgroundAnimator::ChangeType change_type) {
|
| + BackgroundAnimatorChangeType change_type) {
|
| ui::Layer* opaque_background = delegate_view_->opaque_background();
|
| float target_opacity =
|
| (background_type == SHELF_BACKGROUND_MAXIMIZED) ? 1.0f : 0.0f;
|
| scoped_ptr<ui::ScopedLayerAnimationSettings> opaque_background_animation;
|
| - if (change_type != internal::BackgroundAnimator::CHANGE_IMMEDIATE) {
|
| + if (change_type != BACKGROUND_CHANGE_IMMEDIATE) {
|
| opaque_background_animation.reset(new ui::ScopedLayerAnimationSettings(
|
| opaque_background->GetAnimator()));
|
| opaque_background_animation->SetTransitionDuration(
|
| @@ -536,9 +567,11 @@ void ShelfWidget::SetPaintsBackground(
|
|
|
| // TODO(mukai): use ui::Layer on both opaque_background and normal background
|
| // retire background_animator_ at all. It would be simpler.
|
| + // See also DockedBackgroundWidget::SetPaintsBackground.
|
| background_animator_.SetPaintsBackground(
|
| background_type != SHELF_BACKGROUND_DEFAULT,
|
| change_type);
|
| + delegate_view_->SchedulePaint();
|
| }
|
|
|
| ShelfBackgroundType ShelfWidget::GetBackgroundType() const {
|
|
|