OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/shelf/shelf_layout_manager.h" | 5 #include "ash/shelf/shelf_layout_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <cstring> | 9 #include <cstring> |
10 #include <string> | 10 #include <string> |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 auto_hide_behavior_(SHELF_AUTO_HIDE_BEHAVIOR_NEVER), | 200 auto_hide_behavior_(SHELF_AUTO_HIDE_BEHAVIOR_NEVER), |
201 alignment_(SHELF_ALIGNMENT_BOTTOM), | 201 alignment_(SHELF_ALIGNMENT_BOTTOM), |
202 shelf_(shelf), | 202 shelf_(shelf), |
203 workspace_controller_(NULL), | 203 workspace_controller_(NULL), |
204 window_overlaps_shelf_(false), | 204 window_overlaps_shelf_(false), |
205 mouse_over_shelf_when_auto_hide_timer_started_(false), | 205 mouse_over_shelf_when_auto_hide_timer_started_(false), |
206 bezel_event_filter_(new ShelfBezelEventFilter(this)), | 206 bezel_event_filter_(new ShelfBezelEventFilter(this)), |
207 gesture_drag_status_(GESTURE_DRAG_NONE), | 207 gesture_drag_status_(GESTURE_DRAG_NONE), |
208 gesture_drag_amount_(0.f), | 208 gesture_drag_amount_(0.f), |
209 gesture_drag_auto_hide_state_(SHELF_AUTO_HIDE_SHOWN), | 209 gesture_drag_auto_hide_state_(SHELF_AUTO_HIDE_SHOWN), |
210 update_shelf_observer_(NULL) { | 210 update_shelf_observer_(NULL), |
| 211 duration_override_in_ms_(0) { |
211 Shell::GetInstance()->AddShellObserver(this); | 212 Shell::GetInstance()->AddShellObserver(this); |
212 Shell::GetInstance()->lock_state_controller()->AddObserver(this); | 213 Shell::GetInstance()->lock_state_controller()->AddObserver(this); |
213 aura::client::GetActivationClient(root_window_)->AddObserver(this); | 214 aura::client::GetActivationClient(root_window_)->AddObserver(this); |
214 } | 215 } |
215 | 216 |
216 ShelfLayoutManager::~ShelfLayoutManager() { | 217 ShelfLayoutManager::~ShelfLayoutManager() { |
217 if (update_shelf_observer_) | 218 if (update_shelf_observer_) |
218 update_shelf_observer_->Detach(); | 219 update_shelf_observer_->Detach(); |
219 | 220 |
220 FOR_EACH_OBSERVER(ShelfLayoutManagerObserver, observers_, WillDeleteShelf()); | 221 FOR_EACH_OBSERVER(ShelfLayoutManagerObserver, observers_, WillDeleteShelf()); |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 UpdateVisibilityState(); | 492 UpdateVisibilityState(); |
492 gesture_drag_status_ = GESTURE_DRAG_NONE; | 493 gesture_drag_status_ = GESTURE_DRAG_NONE; |
493 } | 494 } |
494 | 495 |
495 void ShelfLayoutManager::CancelGestureDrag() { | 496 void ShelfLayoutManager::CancelGestureDrag() { |
496 gesture_drag_status_ = GESTURE_DRAG_CANCEL_IN_PROGRESS; | 497 gesture_drag_status_ = GESTURE_DRAG_CANCEL_IN_PROGRESS; |
497 UpdateVisibilityState(); | 498 UpdateVisibilityState(); |
498 gesture_drag_status_ = GESTURE_DRAG_NONE; | 499 gesture_drag_status_ = GESTURE_DRAG_NONE; |
499 } | 500 } |
500 | 501 |
| 502 void ShelfLayoutManager::SetAnimationDurationOverride( |
| 503 int duration_override_in_ms) { |
| 504 duration_override_in_ms_ = duration_override_in_ms; |
| 505 } |
| 506 |
501 //////////////////////////////////////////////////////////////////////////////// | 507 //////////////////////////////////////////////////////////////////////////////// |
502 // ShelfLayoutManager, aura::LayoutManager implementation: | 508 // ShelfLayoutManager, aura::LayoutManager implementation: |
503 | 509 |
504 void ShelfLayoutManager::OnWindowResized() { | 510 void ShelfLayoutManager::OnWindowResized() { |
505 LayoutShelf(); | 511 LayoutShelf(); |
506 } | 512 } |
507 | 513 |
508 void ShelfLayoutManager::OnWindowAddedToLayout(aura::Window* child) { | 514 void ShelfLayoutManager::OnWindowAddedToLayout(aura::Window* child) { |
509 } | 515 } |
510 | 516 |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
653 const TargetBounds& target_bounds, | 659 const TargetBounds& target_bounds, |
654 bool animate, | 660 bool animate, |
655 ui::ImplicitAnimationObserver* observer) { | 661 ui::ImplicitAnimationObserver* observer) { |
656 base::AutoReset<bool> auto_reset_updating_bounds(&updating_bounds_, true); | 662 base::AutoReset<bool> auto_reset_updating_bounds(&updating_bounds_, true); |
657 | 663 |
658 ui::ScopedLayerAnimationSettings shelf_animation_setter( | 664 ui::ScopedLayerAnimationSettings shelf_animation_setter( |
659 GetLayer(shelf_)->GetAnimator()); | 665 GetLayer(shelf_)->GetAnimator()); |
660 ui::ScopedLayerAnimationSettings status_animation_setter( | 666 ui::ScopedLayerAnimationSettings status_animation_setter( |
661 GetLayer(shelf_->status_area_widget())->GetAnimator()); | 667 GetLayer(shelf_->status_area_widget())->GetAnimator()); |
662 if (animate) { | 668 if (animate) { |
| 669 int duration = duration_override_in_ms_ ? duration_override_in_ms_ : |
| 670 kCrossFadeDurationMS; |
663 shelf_animation_setter.SetTransitionDuration( | 671 shelf_animation_setter.SetTransitionDuration( |
664 base::TimeDelta::FromMilliseconds(kCrossFadeDurationMS)); | 672 base::TimeDelta::FromMilliseconds(duration)); |
665 shelf_animation_setter.SetTweenType(gfx::Tween::EASE_OUT); | 673 shelf_animation_setter.SetTweenType(gfx::Tween::EASE_OUT); |
666 shelf_animation_setter.SetPreemptionStrategy( | 674 shelf_animation_setter.SetPreemptionStrategy( |
667 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 675 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
668 status_animation_setter.SetTransitionDuration( | 676 status_animation_setter.SetTransitionDuration( |
669 base::TimeDelta::FromMilliseconds(kCrossFadeDurationMS)); | 677 base::TimeDelta::FromMilliseconds(duration)); |
670 status_animation_setter.SetTweenType(gfx::Tween::EASE_OUT); | 678 status_animation_setter.SetTweenType(gfx::Tween::EASE_OUT); |
671 status_animation_setter.SetPreemptionStrategy( | 679 status_animation_setter.SetPreemptionStrategy( |
672 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 680 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
673 } else { | 681 } else { |
674 StopAnimating(); | 682 StopAnimating(); |
675 shelf_animation_setter.SetTransitionDuration(base::TimeDelta()); | 683 shelf_animation_setter.SetTransitionDuration(base::TimeDelta()); |
676 status_animation_setter.SetTransitionDuration(base::TimeDelta()); | 684 status_animation_setter.SetTransitionDuration(base::TimeDelta()); |
677 } | 685 } |
678 if (observer) | 686 if (observer) |
679 status_animation_setter.AddObserver(observer); | 687 status_animation_setter.AddObserver(observer); |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1162 return gfx::Insets(0, distance, 0, 0); | 1170 return gfx::Insets(0, distance, 0, 0); |
1163 case SHELF_ALIGNMENT_TOP: | 1171 case SHELF_ALIGNMENT_TOP: |
1164 return gfx::Insets(0, 0, distance, 0); | 1172 return gfx::Insets(0, 0, distance, 0); |
1165 } | 1173 } |
1166 NOTREACHED(); | 1174 NOTREACHED(); |
1167 return gfx::Insets(); | 1175 return gfx::Insets(); |
1168 } | 1176 } |
1169 | 1177 |
1170 } // namespace internal | 1178 } // namespace internal |
1171 } // namespace ash | 1179 } // namespace ash |
OLD | NEW |