Index: ash/magnifier/magnification_controller.cc |
diff --git a/ash/magnifier/magnification_controller.cc b/ash/magnifier/magnification_controller.cc |
index fee51d228eb3f3ac3cf1213f891f83e20b05ce58..812e0c12d84eb55bf270d9bdd71f5db8203f1600 100644 |
--- a/ash/magnifier/magnification_controller.cc |
+++ b/ash/magnifier/magnification_controller.cc |
@@ -17,7 +17,6 @@ |
#include "base/command_line.h" |
#include "base/synchronization/waitable_event.h" |
#include "base/timer/timer.h" |
-#include "ui/aura/client/aura_constants.h" |
#include "ui/aura/client/cursor_client.h" |
#include "ui/aura/window.h" |
#include "ui/aura/window_tree_host.h" |
@@ -75,6 +74,12 @@ void MoveCursorTo(aura::WindowTreeHost* host, const gfx::Point& root_location) { |
gfx::ToCeiledPoint(host_location_3f.AsPointF())); |
} |
+ui::InputMethod* GetInputMethod(aura::Window* root_window) { |
+ if (root_window->GetHost()) |
+ return root_window->GetHost()->GetInputMethod(); |
+ return nullptr; |
+} |
+ |
} // namespace |
namespace ash { |
@@ -242,8 +247,6 @@ class MagnificationControllerImpl : virtual public MagnificationController, |
ScrollDirection scroll_direction_; |
- ui::InputMethod* input_method_; // Not owned. |
- |
// Timer for moving magnifier window when it fires. |
base::OneShotTimer<MagnificationControllerImpl> move_magnifier_timer_; |
@@ -268,7 +271,6 @@ MagnificationControllerImpl::MagnificationControllerImpl() |
move_cursor_after_animation_(false), |
scale_(kNonMagnifiedScale), |
scroll_direction_(SCROLL_NONE), |
- input_method_(NULL), |
disable_move_magnifier_delay_(false) { |
Shell::GetInstance()->AddPreTargetHandler(this); |
root_window_->AddObserver(this); |
@@ -276,8 +278,9 @@ MagnificationControllerImpl::MagnificationControllerImpl() |
} |
MagnificationControllerImpl::~MagnificationControllerImpl() { |
- if (input_method_) |
- input_method_->RemoveObserver(this); |
+ ui::InputMethod* input_method = GetInputMethod(root_window_); |
+ if (input_method) |
+ input_method->RemoveObserver(this); |
root_window_->RemoveObserver(this); |
@@ -584,13 +587,10 @@ void MagnificationControllerImpl::SetScrollDirection( |
void MagnificationControllerImpl::SetEnabled(bool enabled) { |
Shell* shell = Shell::GetInstance(); |
+ ui::InputMethod* input_method = GetInputMethod(root_window_); |
if (enabled) { |
- if (!input_method_) { |
- input_method_ = |
- root_window_->GetProperty(aura::client::kRootWindowInputMethodKey); |
- if (input_method_) |
- input_method_->AddObserver(this); |
- } |
+ if (!is_enabled_ && input_method) |
+ input_method->AddObserver(this); |
float scale = |
Shell::GetInstance()->accessibility_delegate()-> |
@@ -611,10 +611,8 @@ void MagnificationControllerImpl::SetEnabled(bool enabled) { |
if (!is_enabled_) |
return; |
- if (input_method_) { |
- input_method_->RemoveObserver(this); |
- input_method_ = NULL; |
- } |
+ if (input_method) |
+ input_method->RemoveObserver(this); |
RedrawKeepingMousePosition(kNonMagnifiedScale, true); |
is_enabled_ = enabled; |