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 ASH_WM_ALWAYS_ON_TOP_CONTROLLER_H_ 6 #define ASH_WM_ALWAYS_ON_TOP_CONTROLLER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "ui/aura/window_observer.h" 11 12 namespace aura { 13 class Window; 14 } 15 16 namespace ash { 17 namespace internal { 18 19 // AlwaysOnTopController puts window into proper containers based on its 20 // 'AlwaysOnTop' property. That is, putting a window into the worskpace 21 // container if its "AlwaysOnTop" property is false. Otherwise, put it in 22 // |always_on_top_container_|. 23 class AlwaysOnTopController : public aura::WindowObserver { 24 public: 25 AlwaysOnTopController(); 26 virtual ~AlwaysOnTopController(); 27 28 // Sets the container for always on top windows. 29 void SetAlwaysOnTopContainer(aura::Window* always_on_top_container); 30 31 // Gets container for given |window| based on its "AlwaysOnTop" property. 32 aura::Window* GetContainer(aura::Window* window) const; 33 34 private: 35 // Overridden from aura::WindowObserver: 36 virtual void OnWindowAdded(aura::Window* child) OVERRIDE; 37 virtual void OnWillRemoveWindow(aura::Window* child) OVERRIDE; 38 virtual void OnWindowPropertyChanged(aura::Window* window, 39 const void* key, 40 intptr_t old) OVERRIDE; 41 virtual void OnWindowDestroyed(aura::Window* window) OVERRIDE; 42 43 aura::Window* always_on_top_container_; 44 45 DISALLOW_COPY_AND_ASSIGN(AlwaysOnTopController); 46 }; 47 48 } // namepsace internal 49 } // namepsace ash 50 51 #endif // ASH_WM_ALWAYS_ON_TOP_CONTROLLER_H_ 52