diff options
Diffstat (limited to 'ui/wm/public/transient_window_client.h')
-rw-r--r-- | ui/wm/public/transient_window_client.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/ui/wm/public/transient_window_client.h b/ui/wm/public/transient_window_client.h new file mode 100644 index 0000000..2086100 --- /dev/null +++ b/ui/wm/public/transient_window_client.h @@ -0,0 +1,47 @@ +// Copyright 2014 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_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_ +#define UI_WM_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_ + +#include "base/basictypes.h" +#include "ui/aura/aura_export.h" + +namespace aura { + +class Window; + +namespace client { + +// TransientWindowClient is used to add or remove transient windows. Transient +// children get the following behavior: +// . The transient parent destroys any transient children when it is +// destroyed. This means a transient child is destroyed if either its parent +// or transient parent is destroyed. +// . If a transient child and its transient parent share the same parent, then +// transient children are always ordered above the transient parent. +// Transient windows are typically used for popups and menus. +// TODO(sky): nuke this class and replace with calls to TransientWindowManager. +// This is temporary until we start moving to ui/wm. +class AURA_EXPORT TransientWindowClient { + public: + virtual void AddTransientChild(Window* parent, Window* child) = 0; + virtual void RemoveTransientChild(Window* parent, Window* child) = 0; + virtual Window* GetTransientParent(Window* window) = 0; + virtual const Window* GetTransientParent(const Window* window) = 0; + + protected: + virtual ~TransientWindowClient() {} +}; + +// Sets/gets the TransientWindowClient. This does *not* take ownership of +// |client|. It is assumed the caller will invoke SetTransientWindowClient(NULL) +// before deleting |client|. +AURA_EXPORT void SetTransientWindowClient(TransientWindowClient* client); +AURA_EXPORT TransientWindowClient* GetTransientWindowClient(); + +} // namespace client +} // namespace aura + +#endif // UI_WM_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_ |