Chromium Code Reviews| Index: ash/system/status_area_widget_delegate.cc |
| diff --git a/ash/system/status_area_widget_delegate.cc b/ash/system/status_area_widget_delegate.cc |
| index babe66d1474ae7f9fc5d9d0e4d15dfec3e0cf756..d8e98db9d4ba130b98f5efb8ccce3eb259c244ca 100644 |
| --- a/ash/system/status_area_widget_delegate.cc |
| +++ b/ash/system/status_area_widget_delegate.cc |
| @@ -10,15 +10,43 @@ |
| #include "ash/shell.h" |
| #include "ash/shell_window_ids.h" |
| #include "ash/system/tray/tray_constants.h" |
| +#include "base/memory/scoped_ptr.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "ui/aura/window_event_dispatcher.h" |
| #include "ui/base/resource/resource_bundle.h" |
| +#include "ui/compositor/layer.h" |
| +#include "ui/compositor/scoped_layer_animation_settings.h" |
| +#include "ui/gfx/animation/tween.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/image/image.h" |
| #include "ui/views/accessible_pane_view.h" |
| #include "ui/views/layout/grid_layout.h" |
| #include "ui/views/widget/widget.h" |
| +namespace { |
| + |
| +const int kAnimationDuration = 250; |
| + |
| +class StatusAreaWidgetDelegateAnimationSettings |
| + : public ui::ScopedLayerAnimationSettings { |
| + public: |
| + StatusAreaWidgetDelegateAnimationSettings(ui::Layer* layer) |
| + : ui::ScopedLayerAnimationSettings(layer->GetAnimator()) { |
|
flackr
2014/05/07 21:32:26
Separate out implementation: http://www.chromium.o
jonross
2014/05/08 16:44:17
Done.
|
| + SetTransitionDuration( |
| + base::TimeDelta::FromMilliseconds(kAnimationDuration)); |
| + SetPreemptionStrategy( |
| + ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
| + SetTweenType(gfx::Tween::EASE_IN_OUT); |
| + } |
| + |
| + virtual ~StatusAreaWidgetDelegateAnimationSettings() {} |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(StatusAreaWidgetDelegateAnimationSettings); |
| +}; |
| + |
| +} // namespace |
| + |
| namespace ash { |
| StatusAreaWidgetDelegate::StatusAreaWidgetDelegate() |
| @@ -27,6 +55,8 @@ StatusAreaWidgetDelegate::StatusAreaWidgetDelegate() |
| // Allow the launcher to surrender the focus to another window upon |
| // navigation completion by the user. |
| set_allow_deactivate_on_esc(true); |
| + SetPaintToLayer(true); |
| + SetFillsBoundsOpaquely(false); |
| } |
| StatusAreaWidgetDelegate::~StatusAreaWidgetDelegate() { |
| @@ -117,12 +147,17 @@ void StatusAreaWidgetDelegate::UpdateLayout() { |
| layout->AddView(child); |
| } |
| } |
| + |
| + layer()->GetAnimator()->StopAnimating(); |
| + StatusAreaWidgetDelegateAnimationSettings settings(layer()); |
| + |
| Layout(); |
| UpdateWidgetSize(); |
| } |
| void StatusAreaWidgetDelegate::ChildPreferredSizeChanged(View* child) { |
| // Need to resize the window when trays or items are added/removed. |
| + StatusAreaWidgetDelegateAnimationSettings settings(layer()); |
| UpdateWidgetSize(); |
| } |