Chromium Code Reviews| Index: ui/aura/window.cc |
| diff --git a/ui/aura/window.cc b/ui/aura/window.cc |
| index 07c48e64fc089fbc2a43102b87cbb791ca4dba68..20819d89a93369da8c59e42f19099283f40eb631 100644 |
| --- a/ui/aura/window.cc |
| +++ b/ui/aura/window.cc |
| @@ -13,6 +13,7 @@ |
| #include "ui/aura/event_filter.h" |
| #include "ui/aura/layout_manager.h" |
| #include "ui/aura/window_delegate.h" |
| +#include "ui/aura/window_observer.h" |
| #include "ui/aura/window_types.h" |
| #include "ui/base/animation/multi_animation.h" |
| #include "ui/gfx/canvas_skia.h" |
| @@ -35,6 +36,8 @@ Window::Window(WindowDelegate* delegate) |
| } |
| Window::~Window() { |
| + FOR_EACH_OBSERVER(WindowObserver, observers_, OnWindowClosing(this)); |
| + |
| // Let the delegate know we're in the processing of destroying. |
| if (delegate_) |
| delegate_->OnWindowDestroying(); |
| @@ -259,6 +262,14 @@ bool Window::OnKeyEvent(KeyEvent* event) { |
| return IsVisible() && delegate_->OnKeyEvent(event); |
| } |
| +void Window::AddObserver(WindowObserver* observer) { |
| + observers_.AddObserver(observer); |
| +} |
| + |
| +void Window::RemoveObserver(WindowObserver* observer) { |
| + observers_.RemoveObserver(observer); |
| +} |
| + |
| bool Window::HitTest(const gfx::Point& point) { |
| gfx::Rect local_bounds(gfx::Point(), bounds().size()); |
| // TODO(beng): hittest masks. |
| @@ -371,6 +382,9 @@ void Window::SetVisible(bool visible) { |
| if (delegate_) |
| delegate_->OnWindowVisibilityChanged(is_visible); |
| } |
| + |
| + FOR_EACH_OBSERVER(WindowObserver, observers_, |
|
sky
2011/10/12 23:20:52
Shouldn't this be moved inside the if statement to
sadrul
2011/10/13 00:44:18
Indeed. Good point. Made the change (and updated t
|
| + OnWindowVisibilityChanged(this)); |
| } |
| void Window::SchedulePaint() { |