Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: ui/wm/core/window_animations.h

Issue 180273025: Keep dedicated layers for hiding animation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ScopedHidingAnimationSettings Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/wm/core/visibility_controller_unittest.cc ('k') | ui/wm/core/window_animations.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef UI_WM_CORE_WINDOW_ANIMATIONS_H_ 5 #ifndef UI_WM_CORE_WINDOW_ANIMATIONS_H_
6 #define UI_WM_CORE_WINDOW_ANIMATIONS_H_ 6 #define UI_WM_CORE_WINDOW_ANIMATIONS_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "ui/compositor/scoped_layer_animation_settings.h"
10 #include "ui/wm/core/wm_core_export.h" 11 #include "ui/wm/core/wm_core_export.h"
11 12
12 namespace aura { 13 namespace aura {
13 class Window; 14 class Window;
14 } 15 }
15 namespace base { 16 namespace base {
16 class TimeDelta; 17 class TimeDelta;
17 } 18 }
18 namespace gfx { 19 namespace gfx {
19 class Rect; 20 class Rect;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 aura::Window* window, 75 aura::Window* window,
75 const base::TimeDelta& duration); 76 const base::TimeDelta& duration);
76 77
77 WM_CORE_EXPORT base::TimeDelta GetWindowVisibilityAnimationDuration( 78 WM_CORE_EXPORT base::TimeDelta GetWindowVisibilityAnimationDuration(
78 const aura::Window& window); 79 const aura::Window& window);
79 80
80 WM_CORE_EXPORT void SetWindowVisibilityAnimationVerticalPosition( 81 WM_CORE_EXPORT void SetWindowVisibilityAnimationVerticalPosition(
81 aura::Window* window, 82 aura::Window* window,
82 float position); 83 float position);
83 84
84 // Creates an ImplicitAnimationObserver that takes ownership of the layers 85 // A wrapper of ui::ScopedLayerAnimationSettings for hiding animations.
85 // associated with a Window so that the animation can continue after the Window 86 // Use this to ensure that the animation is visible even after
86 // has been destroyed. 87 // the window is deleted, instead of directly using
87 // The returned object deletes itself when the animations are done. 88 // ui::ScopedLayerAnimationSettings.
88 WM_CORE_EXPORT ui::ImplicitAnimationObserver* 89 class WM_CORE_EXPORT ScopedHidingAnimationSettings {
89 CreateHidingWindowAnimationObserver(aura::Window* window); 90 public:
91 explicit ScopedHidingAnimationSettings(aura::Window* window);
92 ~ScopedHidingAnimationSettings();
93
94 // Returns the wrapped ScopedLayeAnimationSettings instance.
95 ui::ScopedLayerAnimationSettings* layer_animation_settings() {
96 return &layer_animation_settings_;
97 }
98
99 // When set to true, this recreates layers for the window and and puts
sky 2014/03/13 21:09:37 Document when you would want to do this. Can you p
oshima 2014/03/13 22:03:16 I added an example.
sky 2014/03/13 22:04:05 Then add an enum.
100 // the original (and animating) layers on top of the |window_| and
sky 2014/03/13 21:09:37 'the |window_|' -> |window_|
oshima 2014/03/13 22:03:16 Done.
101 // its transient children so that these layers stay above new
102 // focused window.
103 // Note that this is effective only if the |window| has a focus when
sky 2014/03/13 21:09:37 'a focus' -> focus
oshima 2014/03/13 22:03:16 Done.
104 // applying the animation.
105 void set_ensure_visible_after_focus_lost(bool value) {
106 ensure_visibility_after_focus_lost_ = value;
sky 2014/03/13 21:09:37 Make field and method name match here.
oshima 2014/03/13 22:03:16 Done.
107 }
108
109 private:
110 aura::Window* window_;
111 bool ensure_visibility_after_focus_lost_;
112 ui::ScopedLayerAnimationSettings layer_animation_settings_;
113
114 DISALLOW_COPY_AND_ASSIGN(ScopedHidingAnimationSettings);
115 };
90 116
91 // Returns false if the |window| didn't animate. 117 // Returns false if the |window| didn't animate.
92 WM_CORE_EXPORT bool AnimateOnChildWindowVisibilityChanged(aura::Window* window, 118 WM_CORE_EXPORT bool AnimateOnChildWindowVisibilityChanged(aura::Window* window,
93 bool visible); 119 bool visible);
94 WM_CORE_EXPORT bool AnimateWindow(aura::Window* window, 120 WM_CORE_EXPORT bool AnimateWindow(aura::Window* window,
95 WindowAnimationType type); 121 WindowAnimationType type);
96 122
97 // Returns true if window animations are disabled for |window|. Window 123 // Returns true if window animations are disabled for |window|. Window
98 // animations are enabled by default. If |window| is NULL, this just checks 124 // animations are enabled by default. If |window| is NULL, this just checks
99 // if the global flag disabling window animations is present. 125 // if the global flag disabling window animations is present.
100 WM_CORE_EXPORT bool WindowAnimationsDisabled(aura::Window* window); 126 WM_CORE_EXPORT bool WindowAnimationsDisabled(aura::Window* window);
101 127
102 } // namespace corewm 128 } // namespace corewm
103 } // namespace views 129 } // namespace views
104 130
105 #endif // UI_WM_CORE_WINDOW_ANIMATIONS_H_ 131 #endif // UI_WM_CORE_WINDOW_ANIMATIONS_H_
OLDNEW
« no previous file with comments | « ui/wm/core/visibility_controller_unittest.cc ('k') | ui/wm/core/window_animations.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698