diff options
Diffstat (limited to 'chromium/ui/wm/core/visibility_controller.h')
-rw-r--r-- | chromium/ui/wm/core/visibility_controller.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/chromium/ui/wm/core/visibility_controller.h b/chromium/ui/wm/core/visibility_controller.h new file mode 100644 index 00000000000..47ae9910c7d --- /dev/null +++ b/chromium/ui/wm/core/visibility_controller.h @@ -0,0 +1,74 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_WM_CORE_VISIBILITY_CONTROLLER_H_ +#define UI_WM_CORE_VISIBILITY_CONTROLLER_H_ + +#include "base/compiler_specific.h" +#include "base/logging.h" +#include "ui/aura/client/visibility_client.h" +#include "ui/wm/wm_export.h" + +namespace wm { + +class WM_EXPORT VisibilityController + : public aura::client::VisibilityClient { + public: + VisibilityController(); + virtual ~VisibilityController(); + + protected: + // Subclasses override if they want to call a different implementation of + // this function. + // TODO(beng): potentially replace by an actual window animator class in + // window_animations.h. + virtual bool CallAnimateOnChildWindowVisibilityChanged(aura::Window* window, + bool visible); + + private: + // Overridden from aura::client::VisibilityClient: + virtual void UpdateLayerVisibility(aura::Window* window, + bool visible) OVERRIDE; + + DISALLOW_COPY_AND_ASSIGN(VisibilityController); +}; + +// Suspends the animations for visibility changes during the lifetime of an +// instance of this class. +// +// Example: +// +// void ViewName::UnanimatedAction() { +// SuspendChildWindowVisibilityAnimations suspend(parent); +// // Perform unanimated action here. +// // ... +// // When the method finishes, visibility animations will return to their +// // previous state. +// } +// +class WM_EXPORT SuspendChildWindowVisibilityAnimations { + public: + // Suspend visibility animations of child windows. + explicit SuspendChildWindowVisibilityAnimations(aura::Window* window); + + // Restore visibility animations to their original state. + ~SuspendChildWindowVisibilityAnimations(); + + private: + // The window to manage. + aura::Window* window_; + + // Whether the visibility animations on child windows were originally enabled. + const bool original_enabled_; + + DISALLOW_COPY_AND_ASSIGN(SuspendChildWindowVisibilityAnimations); +}; + +// Tells |window| to animate visibility changes to its children. +void WM_EXPORT SetChildWindowVisibilityChangesAnimated( + aura::Window* window); + +} // namespace wm + +#endif // UI_WM_CORE_VISIBILITY_CONTROLLER_H_ |