Index: ash/wm/dock/docked_window_layout_manager.cc |
diff --git a/ash/wm/dock/docked_window_layout_manager.cc b/ash/wm/dock/docked_window_layout_manager.cc |
index 4d72f1b045c08e1b948a55874313d1d4ffe7a537..60a00de0de3a5390c02632a7ccb305e595848315 100644 |
--- a/ash/wm/dock/docked_window_layout_manager.cc |
+++ b/ash/wm/dock/docked_window_layout_manager.cc |
@@ -150,6 +150,7 @@ class DockedBackgroundWidget : public views::Widget, |
params.accept_events = false; |
set_focus_on_creation(false); |
Init(params); |
+ SetVisibilityChangedAnimationsEnabled(false); |
GetNativeWindow()->SetProperty(internal::kStayInSameRootWindowKey, true); |
opaque_background_.SetColor(SK_ColorBLACK); |
opaque_background_.SetBounds(gfx::Rect(GetWindowBoundsInScreen().size())); |
@@ -464,12 +465,18 @@ void DockedWindowLayoutManager::FinishDragging(DockedAction action, |
wm::GetWindowState(dragged_window_)->RemoveObserver(this); |
if (last_active_window_ == dragged_window_) |
last_active_window_ = NULL; |
+ |
+ views::corewm::SetWindowShowAnimationDuration(dragged_window_, |
+ base::TimeDelta()); |
varkha
2014/01/02 22:26:41
nit: Could this be called once after if-else?
pkotwicz
2014/01/02 22:45:51
Given that the two durations are different, I do n
|
} else { |
// A window is no longer dragged and is a child. |
// When a window becomes a child at drag start this is |
// the only opportunity we will have to enforce a window |
// count limit so do it here. |
MaybeMinimizeChildrenExcept(dragged_window_); |
+ |
+ views::corewm::SetWindowShowAnimationDuration(dragged_window_, |
+ base::TimeDelta::FromMilliseconds(kFadeDurationMs)); |
} |
dragged_window_ = NULL; |
dragged_bounds_ = gfx::Rect(); |
@@ -603,6 +610,8 @@ void DockedWindowLayoutManager::OnWindowAddedToLayout(aura::Window* child) { |
wm::GetWindowState(child)->AddObserver(this); |
Relayout(); |
UpdateDockBounds(DockedWindowLayoutManagerObserver::CHILD_CHANGED); |
+ views::corewm::SetWindowShowAnimationDuration(child, |
+ base::TimeDelta::FromMilliseconds(kFadeDurationMs)); |
} |
void DockedWindowLayoutManager::OnWindowRemovedFromLayout(aura::Window* child) { |
@@ -624,6 +633,7 @@ void DockedWindowLayoutManager::OnWindowRemovedFromLayout(aura::Window* child) { |
wm::GetWindowState(child)->RemoveObserver(this); |
Relayout(); |
UpdateDockBounds(DockedWindowLayoutManagerObserver::CHILD_CHANGED); |
+ views::corewm::SetWindowShowAnimationDuration(child, base::TimeDelta()); |
} |
void DockedWindowLayoutManager::OnChildWindowVisibilityChanged( |
@@ -762,21 +772,6 @@ void DockedWindowLayoutManager::OnWindowBoundsChanged( |
Relayout(); |
} |
-void DockedWindowLayoutManager::OnWindowVisibilityChanging( |
- aura::Window* window, bool visible) { |
- if (IsPopupOrTransient(window)) |
- return; |
- int animation_type = views::corewm::WINDOW_VISIBILITY_ANIMATION_TYPE_DEFAULT; |
- if (visible) { |
- animation_type = views::corewm::WINDOW_VISIBILITY_ANIMATION_TYPE_DROP; |
- views::corewm::SetWindowVisibilityAnimationDuration( |
- window, base::TimeDelta::FromMilliseconds(kFadeDurationMs)); |
- } else if (wm::GetWindowState(window)->IsMinimized()) { |
- animation_type = WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE; |
- } |
- views::corewm::SetWindowVisibilityAnimationType(window, animation_type); |
-} |
- |
void DockedWindowLayoutManager::OnWindowDestroying(aura::Window* window) { |
if (dragged_window_ == window) { |
FinishDragging(DOCKED_ACTION_NONE, DOCKED_ACTION_SOURCE_UNKNOWN); |
@@ -832,21 +827,25 @@ void DockedWindowLayoutManager::MaybeMinimizeChildrenExcept( |
if (available_room > room_needed) { |
available_room -= room_needed; |
} else { |
- // Slow down minimizing animations. Lock duration so that it is not |
- // overridden by other ScopedLayerAnimationSettings down the stack. |
- ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator()); |
- settings.SetTransitionDuration( |
+ // Slow down the minimize animation. |
+ views::corewm::SetWindowHideAnimationDuration( |
+ window, |
base::TimeDelta::FromMilliseconds(kMinimizeDurationMs)); |
- settings.LockTransitionDuration(); |
wm::GetWindowState(window)->Minimize(); |
+ views::corewm::SetWindowHideAnimationDuration(window, base::TimeDelta()); |
} |
} |
} |
void DockedWindowLayoutManager::MinimizeDockedWindow( |
wm::WindowState* window_state) { |
- DCHECK(!IsPopupOrTransient(window_state->window())); |
- window_state->window()->Hide(); |
+ aura::Window* window = window_state->window(); |
+ DCHECK(!IsPopupOrTransient(window)); |
+ views::corewm::SetWindowVisibilityAnimationType(window, |
+ ash::WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE); |
+ window->Hide(); |
+ views::corewm::SetWindowVisibilityAnimationType(window, |
+ views::corewm::WINDOW_VISIBILITY_ANIMATION_TYPE_DEFAULT); |
if (window_state->IsActive()) |
window_state->Deactivate(); |
RecordUmaAction(DOCKED_ACTION_MINIMIZE, DOCKED_ACTION_SOURCE_UNKNOWN); |