| OLD | NEW |
| (Empty) |
| 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_WINDOW_OBSERVER_H_ | |
| 6 #define UI_AURA_WINDOW_OBSERVER_H_ | |
| 7 | |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/strings/string16.h" | |
| 10 #include "ui/aura/aura_export.h" | |
| 11 | |
| 12 namespace gfx { | |
| 13 class Rect; | |
| 14 } // namespace gfx | |
| 15 | |
| 16 namespace aura { | |
| 17 | |
| 18 class Window; | |
| 19 | |
| 20 class AURA_EXPORT WindowObserver { | |
| 21 public: | |
| 22 struct HierarchyChangeParams { | |
| 23 enum HierarchyChangePhase { | |
| 24 HIERARCHY_CHANGING, | |
| 25 HIERARCHY_CHANGED | |
| 26 }; | |
| 27 | |
| 28 Window* target; // The window that was added or removed. | |
| 29 Window* new_parent; | |
| 30 Window* old_parent; | |
| 31 HierarchyChangePhase phase; | |
| 32 Window* receiver; // The window receiving the notification. | |
| 33 }; | |
| 34 | |
| 35 WindowObserver(); | |
| 36 | |
| 37 // Called when a window is added or removed. Notifications are sent to the | |
| 38 // following hierarchies in this order: | |
| 39 // 1. |target|. | |
| 40 // 2. |target|'s child hierarchy. | |
| 41 // 3. |target|'s parent hierarchy in its |old_parent| | |
| 42 // (only for Changing notifications). | |
| 43 // 3. |target|'s parent hierarchy in its |new_parent|. | |
| 44 // (only for Changed notifications). | |
| 45 // This sequence is performed via the Changing and Changed notifications below | |
| 46 // before and after the change is committed. | |
| 47 virtual void OnWindowHierarchyChanging(const HierarchyChangeParams& params) {} | |
| 48 virtual void OnWindowHierarchyChanged(const HierarchyChangeParams& params) {} | |
| 49 | |
| 50 // Invoked when |new_window| has been added as a child of this window. | |
| 51 virtual void OnWindowAdded(Window* new_window) {} | |
| 52 | |
| 53 // Invoked prior to removing |window| as a child of this window. | |
| 54 virtual void OnWillRemoveWindow(Window* window) {} | |
| 55 | |
| 56 // Invoked when this window's parent window changes. |parent| may be NULL. | |
| 57 virtual void OnWindowParentChanged(Window* window, Window* parent) {} | |
| 58 | |
| 59 // Invoked when SetProperty(), ClearProperty(), or | |
| 60 // NativeWidgetAura::SetNativeWindowProperty() is called on the window. | |
| 61 // |key| is either a WindowProperty<T>* (SetProperty, ClearProperty) | |
| 62 // or a const char* (SetNativeWindowProperty). Either way, it can simply be | |
| 63 // compared for equality with the property constant. |old| is the old property | |
| 64 // value, which must be cast to the appropriate type before use. | |
| 65 virtual void OnWindowPropertyChanged(Window* window, | |
| 66 const void* key, | |
| 67 intptr_t old) {} | |
| 68 | |
| 69 // Invoked when SetVisible() is invoked on a window. |visible| is the | |
| 70 // value supplied to SetVisible(). If |visible| is true, window->IsVisible() | |
| 71 // may still return false. See description in Window::IsVisible() for details. | |
| 72 virtual void OnWindowVisibilityChanging(Window* window, bool visible) {} | |
| 73 virtual void OnWindowVisibilityChanged(Window* window, bool visible) {} | |
| 74 | |
| 75 // Invoked when SetBounds() is invoked on |window|. |old_bounds| and | |
| 76 // |new_bounds| are in parent coordinates. | |
| 77 virtual void OnWindowBoundsChanged(Window* window, | |
| 78 const gfx::Rect& old_bounds, | |
| 79 const gfx::Rect& new_bounds) {} | |
| 80 | |
| 81 // Invoked when SetTransform() is invoked on |window|. | |
| 82 virtual void OnWindowTransforming(Window* window) {} | |
| 83 virtual void OnWindowTransformed(Window* window) {} | |
| 84 | |
| 85 // Invoked when SetTransform() is invoked on an ancestor of the window being | |
| 86 // observed (including the window itself). | |
| 87 virtual void OnAncestorWindowTransformed(Window* source, Window* window) {} | |
| 88 | |
| 89 // Invoked when |window|'s position among its siblings in the stacking order | |
| 90 // has changed. | |
| 91 virtual void OnWindowStackingChanged(Window* window) {} | |
| 92 | |
| 93 // Invoked when a region of |window| has damage from a new delegated frame. | |
| 94 virtual void OnDelegatedFrameDamage(Window* window, | |
| 95 const gfx::Rect& damage_rect_in_dip) {} | |
| 96 | |
| 97 // Invoked when the Window is being destroyed (i.e. from the start of its | |
| 98 // destructor). This is called before the window is removed from its parent. | |
| 99 virtual void OnWindowDestroying(Window* window) {} | |
| 100 | |
| 101 // Invoked when the Window has been destroyed (i.e. at the end of | |
| 102 // its destructor). This is called after the window is removed from | |
| 103 // its parent. Window automatically removes its WindowObservers | |
| 104 // before calling this method, so the following code is no op. | |
| 105 // | |
| 106 // void MyWindowObserver::OnWindowDestroyed(aura::Window* window) { | |
| 107 // window->RemoveObserver(this); | |
| 108 // } | |
| 109 virtual void OnWindowDestroyed(Window* window) {} | |
| 110 | |
| 111 // Called when a Window has been added to a RootWindow. | |
| 112 virtual void OnWindowAddedToRootWindow(Window* window) {} | |
| 113 | |
| 114 // Called when a Window is about to be removed from a root Window. | |
| 115 // |new_root| contains the new root Window if it is being added to one | |
| 116 // atomically. | |
| 117 virtual void OnWindowRemovingFromRootWindow(Window* window, | |
| 118 Window* new_root) {} | |
| 119 | |
| 120 // Called when the window title has changed. | |
| 121 virtual void OnWindowTitleChanged(Window* window) {} | |
| 122 | |
| 123 protected: | |
| 124 virtual ~WindowObserver(); | |
| 125 | |
| 126 private: | |
| 127 friend class Window; | |
| 128 | |
| 129 // Called when this is added as an observer on |window|. | |
| 130 void OnObservingWindow(Window* window); | |
| 131 | |
| 132 // Called when this is removed from the observers on |window|. | |
| 133 void OnUnobservingWindow(Window* window); | |
| 134 | |
| 135 // Tracks the number of windows being observed to track down | |
| 136 // http://crbug.com/365364. | |
| 137 int observing_; | |
| 138 | |
| 139 DISALLOW_COPY_AND_ASSIGN(WindowObserver); | |
| 140 }; | |
| 141 | |
| 142 } // namespace aura | |
| 143 | |
| 144 #endif // UI_AURA_WINDOW_OBSERVER_H_ | |
| OLD | NEW |