| Index: chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc
|
| diff --git a/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc b/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc
|
| index 2f917020be001a74e73606533960a0dd9a81b789..1fdf9a470fc9124f623eb04791ff5feb5dd716fe 100644
|
| --- a/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc
|
| +++ b/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc
|
| @@ -30,6 +30,11 @@ namespace {
|
| const int kInfolistShowDelayMilliSeconds = 500;
|
| // The milliseconds of the delay to hide the infolist window.
|
| const int kInfolistHideDelayMilliSeconds = 500;
|
| +
|
| +// Converts from ibus::Rect to gfx::Rect.
|
| +gfx::Rect IBusRectToGfxRect(const ibus::Rect& rect) {
|
| + return gfx::Rect(rect.x, rect.y, rect.width, rect.height);
|
| +}
|
| } // namespace
|
|
|
| bool CandidateWindowControllerImpl::Init(IBusController* controller) {
|
| @@ -124,23 +129,24 @@ void CandidateWindowControllerImpl::OnHidePreeditText() {
|
| }
|
|
|
| void CandidateWindowControllerImpl::OnSetCursorLocation(
|
| - const gfx::Rect& cursor_location,
|
| - const gfx::Rect& composition_head) {
|
| + const ibus::Rect& cursor_location,
|
| + const ibus::Rect& composition_head) {
|
| // A workaround for http://crosbug.com/6460. We should ignore very short Y
|
| // move to prevent the window from shaking up and down.
|
| const int kKeepPositionThreshold = 2; // px
|
| const gfx::Rect& last_location =
|
| candidate_window_->cursor_location();
|
| - const int delta_y = abs(last_location.y() - cursor_location.y());
|
| - if ((last_location.x() == cursor_location.x()) &&
|
| + const int delta_y = abs(last_location.y() - cursor_location.y);
|
| + if ((last_location.x() == cursor_location.x) &&
|
| (delta_y <= kKeepPositionThreshold)) {
|
| DVLOG(1) << "Ignored set_cursor_location signal to prevent window shake";
|
| return;
|
| }
|
|
|
| // Remember the cursor location.
|
| - candidate_window_->set_cursor_location(cursor_location);
|
| - candidate_window_->set_composition_head_location(composition_head);
|
| + candidate_window_->set_cursor_location(IBusRectToGfxRect(cursor_location));
|
| + candidate_window_->set_composition_head_location(
|
| + IBusRectToGfxRect(composition_head));
|
| // Move the window per the cursor location.
|
| candidate_window_->ResizeAndMoveParentFrame();
|
| UpdateInfolistBounds();
|
|
|