OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/wm/overview/window_selector_window.h" | 5 #include "ash/wm/overview/window_selector_window.h" |
6 | 6 |
7 #include "ash/screen_util.h" | 7 #include "ash/screen_util.h" |
8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
9 #include "ash/shell_window_ids.h" | 9 #include "ash/shell_window_ids.h" |
10 #include "ash/wm/overview/scoped_transform_overview_window.h" | 10 #include "ash/wm/overview/scoped_transform_overview_window.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 bool animate) { | 100 bool animate) { |
101 gfx::Rect src_rect = transform_window_.GetBoundsInScreen(); | 101 gfx::Rect src_rect = transform_window_.GetBoundsInScreen(); |
102 set_bounds(ScopedTransformOverviewWindow:: | 102 set_bounds(ScopedTransformOverviewWindow:: |
103 ShrinkRectToFitPreservingAspectRatio(src_rect, target_bounds)); | 103 ShrinkRectToFitPreservingAspectRatio(src_rect, target_bounds)); |
104 transform_window_.SetTransform(root_window, | 104 transform_window_.SetTransform(root_window, |
105 ScopedTransformOverviewWindow::GetTransformForRect(src_rect, bounds()), | 105 ScopedTransformOverviewWindow::GetTransformForRect(src_rect, bounds()), |
106 animate); | 106 animate); |
107 // TODO move close button management to WindowSelectorItem, so that we can | 107 // TODO move close button management to WindowSelectorItem, so that we can |
108 // also handle panels. | 108 // also handle panels. |
109 // See http://crbug.com/352143 | 109 // See http://crbug.com/352143 |
110 UpdateCloseButtonBounds(root_window); | 110 UpdateCloseButtonBounds(root_window, animate); |
111 } | 111 } |
112 | 112 |
113 void WindowSelectorWindow::ButtonPressed(views::Button* sender, | 113 void WindowSelectorWindow::ButtonPressed(views::Button* sender, |
114 const ui::Event& event) { | 114 const ui::Event& event) { |
115 views::Widget::GetTopLevelWidgetForNativeView( | 115 views::Widget::GetTopLevelWidgetForNativeView( |
116 transform_window_.window())->Close(); | 116 transform_window_.window())->Close(); |
117 } | 117 } |
118 | 118 |
119 void WindowSelectorWindow::UpdateCloseButtonBounds(aura::Window* root_window) { | 119 void WindowSelectorWindow::UpdateCloseButtonBounds(aura::Window* root_window, |
| 120 bool animate) { |
120 gfx::Rect align_bounds( | 121 gfx::Rect align_bounds( |
121 ScreenUtil::ConvertRectFromScreen(root_window, bounds())); | 122 ScreenUtil::ConvertRectFromScreen(root_window, bounds())); |
122 gfx::Transform close_button_transform; | 123 gfx::Transform close_button_transform; |
123 close_button_transform.Translate(align_bounds.right(), align_bounds.y()); | 124 close_button_transform.Translate(align_bounds.right(), align_bounds.y()); |
124 | 125 |
125 // If the root window has changed, force the close button to be recreated | 126 // If the root window has changed, force the close button to be recreated |
126 // and faded in on the new root window. | 127 // and faded in on the new root window. |
127 if (close_button_ && | 128 if (close_button_ && |
128 close_button_->GetNativeWindow()->GetRootWindow() != root_window) { | 129 close_button_->GetNativeWindow()->GetRootWindow() != root_window) { |
129 close_button_.reset(); | 130 close_button_.reset(); |
(...skipping 20 matching lines...) Expand all Loading... |
150 ui::LayerAnimationElement::OPACITY); | 151 ui::LayerAnimationElement::OPACITY); |
151 { | 152 { |
152 ui::ScopedLayerAnimationSettings settings(layer->GetAnimator()); | 153 ui::ScopedLayerAnimationSettings settings(layer->GetAnimator()); |
153 settings.SetPreemptionStrategy( | 154 settings.SetPreemptionStrategy( |
154 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); | 155 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); |
155 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds( | 156 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds( |
156 WindowSelectorItem::kFadeInMilliseconds)); | 157 WindowSelectorItem::kFadeInMilliseconds)); |
157 layer->SetOpacity(1); | 158 layer->SetOpacity(1); |
158 } | 159 } |
159 } else { | 160 } else { |
160 ui::ScopedLayerAnimationSettings settings( | 161 if (animate) { |
161 close_button_->GetNativeWindow()->layer()->GetAnimator()); | 162 ui::ScopedLayerAnimationSettings settings( |
162 settings.SetPreemptionStrategy( | 163 close_button_->GetNativeWindow()->layer()->GetAnimator()); |
163 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 164 settings.SetPreemptionStrategy( |
164 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds( | 165 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
165 ScopedTransformOverviewWindow::kTransitionMilliseconds)); | 166 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds( |
166 close_button_->GetNativeWindow()->SetTransform(close_button_transform); | 167 ScopedTransformOverviewWindow::kTransitionMilliseconds)); |
| 168 close_button_->GetNativeWindow()->SetTransform(close_button_transform); |
| 169 } else { |
| 170 close_button_->GetNativeWindow()->SetTransform(close_button_transform); |
| 171 } |
167 } | 172 } |
168 } | 173 } |
169 | 174 |
170 } // namespace ash | 175 } // namespace ash |
OLD | NEW |