Index: ui/aura/scoped_window_targeter.cc |
diff --git a/ui/aura/scoped_window_targeter.cc b/ui/aura/scoped_window_targeter.cc |
index 96355246245a856c91340faba0edee0b7e11a572..4a704d33a3fe3bf0003653f08e264046a7cda063 100644 |
--- a/ui/aura/scoped_window_targeter.cc |
+++ b/ui/aura/scoped_window_targeter.cc |
@@ -13,15 +13,19 @@ ScopedWindowTargeter::ScopedWindowTargeter( |
scoped_ptr<ui::EventTargeter> new_targeter) |
: window_(window), |
old_targeter_(window->SetEventTargeter(new_targeter.Pass())) { |
+ window_->AddObserver(this); |
} |
ScopedWindowTargeter::~ScopedWindowTargeter() { |
- if (window_) |
+ if (window_) { |
+ window_->RemoveObserver(this); |
window_->SetEventTargeter(old_targeter_.Pass()); |
+ } |
} |
void ScopedWindowTargeter::OnWindowDestroyed(Window* window) { |
CHECK_EQ(window_, window); |
+ window_->RemoveObserver(this); |
Jun Mukai
2014/07/25 20:24:00
aura::Window destructor removes the observer right
pkotwicz
2014/07/25 20:31:20
You're right. Thanks for letting me know!
|
window_ = NULL; |
old_targeter_.reset(); |
} |