Index: ui/views/widget/native_widget_window_reorderer_aura.h |
diff --git a/ui/views/widget/native_widget_window_reorderer_aura.h b/ui/views/widget/native_widget_window_reorderer_aura.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ccda75c38942c3b6478880dca0cbe93cd90a07fc |
--- /dev/null |
+++ b/ui/views/widget/native_widget_window_reorderer_aura.h |
@@ -0,0 +1,59 @@ |
+// Copyright (c) 2013 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_VIEWS_WIDGET_NATIVE_WIDGET_WINDOW_REORDERER_AURA_H_ |
+#define UI_VIEWS_WIDGET_NATIVE_WIDGET_WINDOW_REORDERER_AURA_H_ |
+ |
+#include "base/compiler_specific.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "ui/aura/window_observer.h" |
+ |
+namespace aura { |
+class Window; |
+} |
+ |
+namespace views { |
+class View; |
+ |
+// Class which reorders the widget's child windows which have an associated view |
+// in the widget's view tree according the z-order of the views in the view |
+// tree. Windows not associated to a view are stacked above windows with an |
+// associated view. The child windows' layers are additionally reordered |
+// according to the z-order of the associated views relative to views with |
+// layers. |
+class NativeWidgetWindowReordererAura : public aura::WindowObserver { |
sky
2013/05/28 14:03:50
Again, I think this name is overly verbose. Window
pkotwicz
2013/05/28 15:15:00
Renamed!
|
+ public: |
+ NativeWidgetWindowReordererAura(aura::Window* window, View* root_view); |
+ virtual ~NativeWidgetWindowReordererAura(); |
+ |
+ // Explicitly reorder the children of |window_| (and their layers). This |
+ // method should be called when the position of a view with an associated |
+ // window changes in the view hierarchy. This method assumes that the |
+ // child layers of |window_| which are owned by views are already in the |
+ // correct z-order relative to each other and does no reordering if there |
+ // are no views with an associated window. |
+ void ReorderChildWindows(); |
+ |
+ private: |
+ // aura::WindowObserver overrides: |
+ virtual void OnWindowAdded(aura::Window* new_window) OVERRIDE; |
+ virtual void OnWillRemoveWindow(aura::Window* window) OVERRIDE; |
+ virtual void OnWindowDestroying(aura::Window* window) OVERRIDE; |
+ |
+ // The window and the root view of the native widget which owns the |
+ // NativeWidgetWindowReordererAura. |
+ aura::Window* parent_window_; |
+ View* root_view_; |
+ |
+ // Reorders windows as a result of the views::kHostViewKey being set on a |
+ // child of |parent_window_|. |
+ class AssociationObserver; |
+ scoped_ptr<AssociationObserver> association_observer_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(NativeWidgetWindowReordererAura); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // UI_VIEWS_WIDGET_NATIVE_WIDGET_WINDOW_REORDERER_AURA_H_ |