| Index: ui/keyboard/keyboard_controller.cc
|
| diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc
|
| index ceef5941f7e424a9e912a7ad8ee0f8fe9ff73751..7abfc76d7e884407e5da67b2401e65007c9bbdb7 100644
|
| --- a/ui/keyboard/keyboard_controller.cc
|
| +++ b/ui/keyboard/keyboard_controller.cc
|
| @@ -244,6 +244,10 @@ KeyboardController::~KeyboardController() {
|
| if (input_method_)
|
| input_method_->RemoveObserver(this);
|
| ResetWindowInsets();
|
| +
|
| + for (std::set<aura::Window*>::iterator it = observed_windows_.begin();
|
| + it != observed_windows_.end(); ++it)
|
| + (*it)->RemoveObserver(window_bounds_observer_.get());
|
| }
|
|
|
| // static
|
| @@ -561,6 +565,7 @@ void KeyboardController::AddBoundsChangedObserver(aura::Window* window) {
|
| if (target_window &&
|
| !target_window->HasObserver(window_bounds_observer_.get())) {
|
| target_window->AddObserver(window_bounds_observer_.get());
|
| + observed_windows_.insert(target_window);
|
| }
|
| }
|
|
|
| @@ -569,6 +574,7 @@ void KeyboardController::RemoveBoundsChangedObserver(aura::Window* window) {
|
| if (target_window &&
|
| target_window->HasObserver(window_bounds_observer_.get())) {
|
| target_window->RemoveObserver(window_bounds_observer_.get());
|
| + observed_windows_.erase(target_window);
|
| }
|
| }
|
|
|
|
|