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/desktop_background/desktop_background_widget_controller.h" | 5 #include "ash/desktop_background/desktop_background_widget_controller.h" |
6 | 6 |
7 #include "ash/ash_export.h" | 7 #include "ash/ash_export.h" |
8 #include "ash/common/wm_lookup.h" | 8 #include "ash/common/wm_lookup.h" |
9 #include "ash/common/wm_window.h" | 9 #include "ash/common/wm_window.h" |
10 #include "ash/desktop_background/user_wallpaper_delegate.h" | 10 #include "ash/desktop_background/user_wallpaper_delegate.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 ~ShowWallpaperAnimationObserver() override { | 36 ~ShowWallpaperAnimationObserver() override { |
37 StopObservingImplicitAnimations(); | 37 StopObservingImplicitAnimations(); |
38 if (desktop_widget_) | 38 if (desktop_widget_) |
39 desktop_widget_->RemoveObserver(this); | 39 desktop_widget_->RemoveObserver(this); |
40 } | 40 } |
41 | 41 |
42 private: | 42 private: |
43 // Overridden from ui::ImplicitAnimationObserver: | 43 // Overridden from ui::ImplicitAnimationObserver: |
44 void OnImplicitAnimationsScheduled() override { | 44 void OnImplicitAnimationsScheduled() override { |
45 if (is_initial_animation_) { | 45 if (is_initial_animation_) { |
46 root_window_controller_-> | 46 root_window_controller_->HandleInitialDesktopBackgroundAnimationStarted(); |
47 HandleInitialDesktopBackgroundAnimationStarted(); | |
48 } | 47 } |
49 } | 48 } |
50 | 49 |
51 void OnImplicitAnimationsCompleted() override { | 50 void OnImplicitAnimationsCompleted() override { |
52 root_window_controller_->OnWallpaperAnimationFinished(desktop_widget_); | 51 root_window_controller_->OnWallpaperAnimationFinished(desktop_widget_); |
53 delete this; | 52 delete this; |
54 } | 53 } |
55 | 54 |
56 // Overridden from views::WidgetObserver. | 55 // Overridden from views::WidgetObserver. |
57 void OnWidgetDestroying(views::Widget* widget) override { delete this; } | 56 void OnWidgetDestroying(views::Widget* widget) override { delete this; } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 void DesktopBackgroundWidgetController::SetBounds(const gfx::Rect& bounds) { | 91 void DesktopBackgroundWidgetController::SetBounds(const gfx::Rect& bounds) { |
93 if (widget_) | 92 if (widget_) |
94 widget_->SetBounds(bounds); | 93 widget_->SetBounds(bounds); |
95 } | 94 } |
96 | 95 |
97 bool DesktopBackgroundWidgetController::Reparent(aura::Window* root_window, | 96 bool DesktopBackgroundWidgetController::Reparent(aura::Window* root_window, |
98 int src_container, | 97 int src_container, |
99 int dest_container) { | 98 int dest_container) { |
100 if (widget_) { | 99 if (widget_) { |
101 widget_parent_->RemoveObserver(this); | 100 widget_parent_->RemoveObserver(this); |
102 views::Widget::ReparentNativeView(widget_->GetNativeView(), | 101 views::Widget::ReparentNativeView( |
103 root_window->GetChildById(dest_container)); | 102 widget_->GetNativeView(), root_window->GetChildById(dest_container)); |
104 widget_parent_ = WmLookup::Get()->GetWindowForWidget(widget_)->GetParent(); | 103 widget_parent_ = WmLookup::Get()->GetWindowForWidget(widget_)->GetParent(); |
105 widget_parent_->AddObserver(this); | 104 widget_parent_->AddObserver(this); |
106 return true; | 105 return true; |
107 } | 106 } |
108 // Nothing to reparent. | 107 // Nothing to reparent. |
109 return false; | 108 return false; |
110 } | 109 } |
111 | 110 |
112 void DesktopBackgroundWidgetController::RemoveObservers() { | 111 void DesktopBackgroundWidgetController::RemoveObservers() { |
113 widget_parent_->RemoveObserver(this); | 112 widget_parent_->RemoveObserver(this); |
114 widget_->RemoveObserver(this); | 113 widget_->RemoveObserver(this); |
115 widget_ = nullptr; | 114 widget_ = nullptr; |
116 } | 115 } |
117 | 116 |
118 void DesktopBackgroundWidgetController::OnWindowBoundsChanged( | 117 void DesktopBackgroundWidgetController::OnWindowBoundsChanged( |
119 WmWindow* window, | 118 WmWindow* window, |
120 const gfx::Rect& old_bounds, | 119 const gfx::Rect& old_bounds, |
121 const gfx::Rect& new_bounds) { | 120 const gfx::Rect& new_bounds) { |
122 SetBounds(new_bounds); | 121 SetBounds(new_bounds); |
123 } | 122 } |
124 | 123 |
125 void DesktopBackgroundWidgetController::StartAnimating( | 124 void DesktopBackgroundWidgetController::StartAnimating( |
126 RootWindowController* root_window_controller) { | 125 RootWindowController* root_window_controller) { |
127 if (widget_) { | 126 if (widget_) { |
128 ui::ScopedLayerAnimationSettings settings( | 127 ui::ScopedLayerAnimationSettings settings( |
129 widget_->GetNativeView()->layer()->GetAnimator()); | 128 widget_->GetNativeView()->layer()->GetAnimator()); |
130 settings.AddObserver(new ShowWallpaperAnimationObserver( | 129 settings.AddObserver(new ShowWallpaperAnimationObserver( |
131 root_window_controller, widget_, | 130 root_window_controller, widget_, Shell::GetInstance() |
132 Shell::GetInstance()->user_wallpaper_delegate()-> | 131 ->user_wallpaper_delegate() |
133 ShouldShowInitialAnimation())); | 132 ->ShouldShowInitialAnimation())); |
134 // When |widget_| shows, AnimateShowWindowCommon() is called to do the | 133 // When |widget_| shows, AnimateShowWindowCommon() is called to do the |
135 // animation. Sets transition duration to 0 to avoid animating to the | 134 // animation. Sets transition duration to 0 to avoid animating to the |
136 // show animation's initial values. | 135 // show animation's initial values. |
137 settings.SetTransitionDuration(base::TimeDelta()); | 136 settings.SetTransitionDuration(base::TimeDelta()); |
138 widget_->Show(); | 137 widget_->Show(); |
139 } | 138 } |
140 } | 139 } |
141 | 140 |
142 AnimatingDesktopController::AnimatingDesktopController( | 141 AnimatingDesktopController::AnimatingDesktopController( |
143 DesktopBackgroundWidgetController* component) { | 142 DesktopBackgroundWidgetController* component) { |
144 controller_.reset(component); | 143 controller_.reset(component); |
145 } | 144 } |
146 | 145 |
147 AnimatingDesktopController::~AnimatingDesktopController() { | 146 AnimatingDesktopController::~AnimatingDesktopController() {} |
148 } | |
149 | 147 |
150 void AnimatingDesktopController::StopAnimating() { | 148 void AnimatingDesktopController::StopAnimating() { |
151 if (controller_) { | 149 if (controller_) { |
152 ui::Layer* layer = controller_->widget()->GetNativeView()->layer(); | 150 ui::Layer* layer = controller_->widget()->GetNativeView()->layer(); |
153 layer->GetAnimator()->StopAnimating(); | 151 layer->GetAnimator()->StopAnimating(); |
154 } | 152 } |
155 } | 153 } |
156 | 154 |
157 DesktopBackgroundWidgetController* AnimatingDesktopController::GetController( | 155 DesktopBackgroundWidgetController* AnimatingDesktopController::GetController( |
158 bool pass_ownership) { | 156 bool pass_ownership) { |
159 if (pass_ownership) | 157 if (pass_ownership) |
160 return controller_.release(); | 158 return controller_.release(); |
161 return controller_.get(); | 159 return controller_.get(); |
162 } | 160 } |
163 | 161 |
164 } // namespace ash | 162 } // namespace ash |
OLD | NEW |