| // 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_ |