| Index: athena/home/home_card_impl.cc
|
| diff --git a/athena/home/home_card_impl.cc b/athena/home/home_card_impl.cc
|
| index c1efcb75c99f9c8defc31ae0d25c1a32d74d7162..f6a64f382f11bf6a22904519f39ab8cbf5403f41 100644
|
| --- a/athena/home/home_card_impl.cc
|
| +++ b/athena/home/home_card_impl.cc
|
| @@ -19,6 +19,7 @@
|
| #include "ui/app_list/views/contents_view.h"
|
| #include "ui/aura/layout_manager.h"
|
| #include "ui/aura/window.h"
|
| +#include "ui/compositor/closure_animation_observer.h"
|
| #include "ui/compositor/layer.h"
|
| #include "ui/compositor/scoped_layer_animation_settings.h"
|
| #include "ui/gfx/animation/tween.h"
|
| @@ -131,7 +132,8 @@ class HomeCardView : public views::WidgetDelegateView,
|
| main_view_(new AthenaStartPageView(view_delegate)),
|
| minimized_background_(new views::View()),
|
| drag_indicator_(new views::View()),
|
| - gesture_delegate_(gesture_delegate) {
|
| + gesture_delegate_(gesture_delegate),
|
| + weak_factory_(this) {
|
| background_->set_background(
|
| views::Background::CreateVerticalGradientBackground(SK_ColorLTGRAY,
|
| SK_ColorWHITE));
|
| @@ -181,6 +183,7 @@ class HomeCardView : public views::WidgetDelegateView,
|
| }
|
| background_->layer()->SetOpacity(background_opacity);
|
| minimized_background_->layer()->SetOpacity(1.0f - background_opacity);
|
| + UpdateMinimizedBackgroundVisibility();
|
|
|
| int background_height = kHomeCardHeight;
|
| if (from_state == HomeCard::VISIBLE_CENTERED ||
|
| @@ -207,11 +210,18 @@ class HomeCardView : public views::WidgetDelegateView,
|
| gfx::Tween::Type tween_type) {
|
| float minimized_opacity =
|
| (state == HomeCard::VISIBLE_MINIMIZED) ? 1.0f : 0.0f;
|
| + // |minimized_background_| needs to be visible before scheduling animation.
|
| + if (state == HomeCard::VISIBLE_MINIMIZED)
|
| + minimized_background_->SetVisible(true);
|
| +
|
| if (minimized_opacity !=
|
| minimized_background_->layer()->GetTargetOpacity()) {
|
| ui::ScopedLayerAnimationSettings settings(
|
| minimized_background_->layer()->GetAnimator());
|
| settings.SetTweenType(gfx::Tween::EASE_IN);
|
| + settings.AddObserver(new ui::ClosureAnimationObserver(
|
| + base::Bind(&HomeCardView::UpdateMinimizedBackgroundVisibility,
|
| + weak_factory_.GetWeakPtr())));
|
| minimized_background_->layer()->SetOpacity(minimized_opacity);
|
| }
|
|
|
| @@ -293,6 +303,11 @@ class HomeCardView : public views::WidgetDelegateView,
|
| }
|
|
|
| private:
|
| + void UpdateMinimizedBackgroundVisibility() {
|
| + minimized_background_->SetVisible(
|
| + minimized_background_->layer()->GetTargetOpacity() != 0.0f);
|
| + }
|
| +
|
| // views::WidgetDelegate:
|
| views::View* GetContentsView() override { return this; }
|
|
|
| @@ -310,6 +325,8 @@ class HomeCardView : public views::WidgetDelegateView,
|
| scoped_ptr<HomeCardGestureManager> gesture_manager_;
|
| HomeCardGestureManager::Delegate* gesture_delegate_;
|
|
|
| + base::WeakPtrFactory<HomeCardView> weak_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(HomeCardView);
|
| };
|
|
|
|
|