Home | History | Annotate | Download | only in client
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef UI_AURA_CLIENT_STACKING_CLIENT_H_
      6 #define UI_AURA_CLIENT_STACKING_CLIENT_H_
      7 
      8 #include "ui/aura/aura_export.h"
      9 
     10 namespace gfx {
     11 class Rect;
     12 }
     13 
     14 namespace aura {
     15 class Window;
     16 namespace client {
     17 
     18 // An interface implemented by an object that stacks windows.
     19 class AURA_EXPORT StackingClient {
     20  public:
     21   virtual ~StackingClient() {}
     22 
     23   // Called by the Window when it looks for a default parent. Returns the
     24   // window that |window| should be added to instead. |context| provides a
     25   // Window (generally a RootWindow) that can be used to determine which
     26   // desktop type the default parent should be chosen from.  NOTE: this may
     27   // have side effects. It should only be used when |window| is going to be
     28   // immediately added.
     29   //
     30   // TODO(erg): Remove |context|, and maybe after oshima's patch lands,
     31   // |bounds|.
     32   virtual Window* GetDefaultParent(
     33       Window* context,
     34       Window* window,
     35       const gfx::Rect& bounds) = 0;
     36 };
     37 
     38 // Set/Get a stacking client for a specific window. Setting the stacking client
     39 // sets the stacking client on the window's RootWindow, not the window itself.
     40 // Likewise getting obtains it from the window's RootWindow. If |window| is
     41 // non-NULL it must be in a RootWindow. If |window| is NULL, the default
     42 // stacking client is used.
     43 AURA_EXPORT void SetStackingClient(Window* window,
     44                                    StackingClient* stacking_client);
     45 StackingClient* GetStackingClient(Window* window);
     46 
     47 }  // namespace client
     48 }  // namespace aura
     49 
     50 #endif  // UI_AURA_CLIENT_STACKING_CLIENT_H_
     51