Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / ui / aura / client / window_stacking_client.h
blob848260397cb59ef6e1933709a4b7a7026fb9e7db
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_AURA_CLIENT_WINDOW_STACKING_CLIENT_H_
6 #define UI_AURA_CLIENT_WINDOW_STACKING_CLIENT_H_
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "ui/aura/aura_export.h"
11 #include "ui/aura/window.h"
13 namespace aura {
14 namespace client {
16 class AURA_EXPORT WindowStackingClient {
17 public:
18 // Invoked from the various Window stacking functions. Allows the
19 // WindowStackingClient to alter the source, target and/or direction to stack.
20 // Returns true if stacking should continue; false if the stacking should not
21 // happen.
22 virtual bool AdjustStacking(Window** child,
23 Window** target,
24 Window::StackDirection* direction) = 0;
26 protected:
27 virtual ~WindowStackingClient() {}
30 // Sets/gets the WindowStackingClient. This does *not* take ownership of
31 // |client|. It is assumed the caller will invoke SetWindowStackingClient(NULL)
32 // before deleting |client|.
33 AURA_EXPORT void SetWindowStackingClient(WindowStackingClient* client);
34 AURA_EXPORT WindowStackingClient* GetWindowStackingClient();
36 } // namespace client
37 } // namespace aura
39 #endif // UI_AURA_CLIENT_WINDOW_STACKING_CLIENT_H_