Index: ash/frame/caption_buttons/frame_caption_button_container_view.cc |
diff --git a/ash/frame/caption_buttons/frame_caption_button_container_view.cc b/ash/frame/caption_buttons/frame_caption_button_container_view.cc |
index 643993e4ca03d70e1607d3b9f8761c8d29479cad..5cb052984a11ef721a1826c3318c4fb0cca8e06f 100644 |
--- a/ash/frame/caption_buttons/frame_caption_button_container_view.cc |
+++ b/ash/frame/caption_buttons/frame_caption_button_container_view.cc |
@@ -16,10 +16,7 @@ |
#include "grit/ui_strings.h" // Accessibility names |
#include "ui/base/hit_test.h" |
#include "ui/base/l10n/l10n_util.h" |
-#include "ui/compositor/layer.h" |
#include "ui/compositor/scoped_animation_duration_scale_mode.h" |
-#include "ui/compositor/scoped_layer_animation_settings.h" |
-#include "ui/gfx/animation/tween.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/insets.h" |
#include "ui/gfx/point.h" |
@@ -30,14 +27,6 @@ namespace ash { |
namespace { |
-// Visual design parameters for animating the transition to maximize mode. |
-// When the size button hides we delay sliding the minimize button into its |
-// location. Also used to delay showing the size button so that the minimize |
-// button slides out of that position. |
-const int kAnimationDelayMs = 100; |
-const int kMinimizeSlideDurationMs = 500; |
-const int kSizeFadeDurationMs = 250; |
- |
// Converts |point| from |src| to |dst| and hittests against |dst|. |
bool ConvertPointToViewAndHitTest(const views::View* src, |
const views::View* dst, |
@@ -60,10 +49,6 @@ FrameCaptionButtonContainerView::FrameCaptionButtonContainerView( |
minimize_button_(NULL), |
size_button_(NULL), |
close_button_(NULL) { |
- SetPaintToLayer(true); |
- SetFillsBoundsOpaquely(false); |
- set_layer_owner_delegate(this); |
- |
// Insert the buttons left to right. |
minimize_button_ = new FrameCaptionButton(this, CAPTION_BUTTON_ICON_MINIMIZE); |
minimize_button_->SetAccessibleName( |
@@ -137,47 +122,10 @@ int FrameCaptionButtonContainerView::NonClientHitTest( |
} |
void FrameCaptionButtonContainerView::UpdateSizeButtonVisibility() { |
- bool visible = !Shell::GetInstance()->maximize_mode_controller()-> |
+ size_button_->SetVisible( |
+ !Shell::GetInstance()->maximize_mode_controller()-> |
IsMaximizeModeWindowManagerEnabled() && |
- frame_->widget_delegate()->CanMaximize(); |
- |
- // Turning visibility off prevents animations from rendering. Setting the |
- // size button visibility to false will occur after the animation. |
- if (visible) { |
- size_button_->SetVisible(true); |
- // Because we delay calling View::SetVisible(false) until the end of the |
- // animation, if SetVisible(true) is called mid-animation, the View still |
- // believes it is visible and will not update the target layer visibility. |
- size_button_->layer()->SetVisible(true); |
- } |
- |
- ui::ScopedLayerAnimationSettings settings( |
- size_button_->layer()->GetAnimator()); |
- settings.SetTransitionDuration( |
- base::TimeDelta::FromMilliseconds(kSizeFadeDurationMs)); |
- settings.SetPreemptionStrategy( |
- ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
- |
- if (visible) { |
- settings.SetTweenType(gfx::Tween::EASE_OUT); |
- // Delay fade in so that the minimize button has begun its sliding |
- // animation. |
- size_button_->layer()->GetAnimator()->SchedulePauseForProperties( |
- base::TimeDelta::FromMilliseconds(kAnimationDelayMs), |
- ui::LayerAnimationElement::OPACITY); |
- size_button_->layer()->SetOpacity(1.0f); |
- } else { |
- settings.SetTweenType(gfx::Tween::EASE_IN); |
- // Observer will call size_button_->SetVisible(false) upon completion of |
- // the animation. |
- // TODO(jonross): avoid the delayed SetVisible(false) call by acquring |
- // the size_button's layer before making it invisible. That layer can then |
- // be animated and deleted upon completion of the animation. See |
- // LayerOwner::RecreateLayer |
- settings.AddObserver(this); |
- size_button_->layer()->SetOpacity(0.0f); |
- size_button_->layer()->SetVisible(false); |
- } |
+ frame_->widget_delegate()->CanMaximize()); |
} |
gfx::Size FrameCaptionButtonContainerView::GetPreferredSize() const { |
@@ -191,56 +139,15 @@ gfx::Size FrameCaptionButtonContainerView::GetPreferredSize() const { |
} |
void FrameCaptionButtonContainerView::Layout() { |
- int x = width(); |
- // Offsets the initial position of a child, so that buttons slide into the |
- // place as other buttons are added/removed. |
- int offset_x = 0; |
- for (int i = child_count() - 1; i >= 0; --i) { |
+ int x = 0; |
+ for (int i = 0; i < child_count(); ++i) { |
views::View* child = child_at(i); |
- ui::LayerAnimator* child_animator = child->layer()->GetAnimator(); |
- bool child_animating = child_animator->is_animating(); |
- // The actual property visibility is not being animated, otherwise the |
- // view does not render. |
- bool child_animating_opacity = child_animator-> |
- IsAnimatingProperty(ui::LayerAnimationElement::OPACITY); |
- bool child_target_visibility = child->layer()->GetTargetVisibility(); |
- |
- if (child_animating_opacity) { |
- if (child_target_visibility) |
- offset_x += child->width(); |
- else |
- offset_x -= child->width(); |
- } |
- |
- if (!child->visible() || !child_target_visibility) |
+ if (!child->visible()) |
continue; |
- scoped_ptr<ui::ScopedLayerAnimationSettings> animation; |
gfx::Size size = child->GetPreferredSize(); |
- x -= size.width(); |
- |
- // Animate the button if a previous button is currently animating |
- // its visibility. |
- if (offset_x != 0) { |
- if (!child_animating) |
- child->SetBounds(x + offset_x, 0, size.width(), size.height()); |
- if (offset_x < 0) { |
- // Delay sliding to where the previous button was located. |
- child_animator->SchedulePauseForProperties( |
- base::TimeDelta::FromMilliseconds(kAnimationDelayMs), |
- ui::LayerAnimationElement::BOUNDS); |
- } |
- |
- ui::ScopedLayerAnimationSettings* settings = |
- new ui::ScopedLayerAnimationSettings(child_animator); |
- settings->SetTransitionDuration( |
- base::TimeDelta::FromMilliseconds(kMinimizeSlideDurationMs)); |
- settings->SetPreemptionStrategy( |
- ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
- settings->SetTweenType(gfx::Tween::EASE_OUT); |
- animation.reset(settings); |
- } |
child->SetBounds(x, 0, size.width(), size.height()); |
+ x += size.width(); |
} |
} |
@@ -379,29 +286,6 @@ void FrameCaptionButtonContainerView::SetHoveredAndPressedButtons( |
} |
} |
-void FrameCaptionButtonContainerView::OnImplicitAnimationsCompleted() { |
- // If there is another animation in the queue, the reverse animation was |
- // triggered before the completion of animating to invisible. Do not turn off |
- // the visibility so that the next animation may render. |
- if (!size_button_->layer()->GetAnimator()->is_animating() && |
- !size_button_->layer()->GetTargetVisibility()) { |
- size_button_->SetVisible(false); |
- } |
- // TODO(jonross): currently we need to delay telling the parent about the |
- // size change from visibility. When the size changes this forces a relayout |
- // and we want to animate both the bounds of FrameCaptionButtonContainerView |
- // along with that of its children. However when the parent is currently |
- // having its bounds changed this leads to strange animations where this view |
- // renders outside of its parents. Create a more specific animation where |
- // height and y are immediately fixed, and where we only animate width and x. |
- PreferredSizeChanged(); |
-} |
- |
-void FrameCaptionButtonContainerView::OnLayerRecreated(ui::Layer* old_layer, |
- ui::Layer* new_layer) { |
- GetWidget()->UpdateRootLayers(); |
-} |
- |
FrameCaptionButtonContainerView::ButtonIconIds::ButtonIconIds() |
: icon_image_id(-1), |
inactive_icon_image_id(-1), |