Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: ui/keyboard/keyboard_controller.cc

Issue 2824103005: Ensure caret in workarea after virtual keyboard IME change.
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/keyboard/keyboard_controller.h" 5 #include "ui/keyboard/keyboard_controller.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 if (ui_->HasKeyboardWindow() && ui_->GetKeyboardWindow()->IsVisible()) { 232 if (ui_->HasKeyboardWindow() && ui_->GetKeyboardWindow()->IsVisible()) {
233 for (KeyboardControllerObserver& observer : observer_list_) 233 for (KeyboardControllerObserver& observer : observer_list_)
234 observer.OnKeyboardBoundsChanging(new_bounds); 234 observer.OnKeyboardBoundsChanging(new_bounds);
235 if (keyboard::IsKeyboardOverscrollEnabled()) 235 if (keyboard::IsKeyboardOverscrollEnabled())
236 ui_->InitInsets(new_bounds); 236 ui_->InitInsets(new_bounds);
237 else 237 else
238 ui_->ResetInsets(); 238 ui_->ResetInsets();
239 } else { 239 } else {
240 current_keyboard_bounds_ = gfx::Rect(); 240 current_keyboard_bounds_ = gfx::Rect();
241 } 241 }
242 ui_->EnsureCaretInWorkArea();
242 } 243 }
243 244
244 void KeyboardController::HideKeyboard(HideReason reason) { 245 void KeyboardController::HideKeyboard(HideReason reason) {
245 keyboard_visible_ = false; 246 keyboard_visible_ = false;
246 ToggleTouchEventLogging(true); 247 ToggleTouchEventLogging(true);
247 248
248 keyboard::LogKeyboardControlEvent( 249 keyboard::LogKeyboardControlEvent(
249 reason == HIDE_REASON_AUTOMATIC ? 250 reason == HIDE_REASON_AUTOMATIC ?
250 keyboard::KEYBOARD_CONTROL_HIDE_AUTO : 251 keyboard::KEYBOARD_CONTROL_HIDE_AUTO :
251 keyboard::KEYBOARD_CONTROL_HIDE_USER); 252 keyboard::KEYBOARD_CONTROL_HIDE_USER);
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 } 498 }
498 499
499 bool KeyboardController::WillHideKeyboard() const { 500 bool KeyboardController::WillHideKeyboard() const {
500 return weak_factory_.HasWeakPtrs(); 501 return weak_factory_.HasWeakPtrs();
501 } 502 }
502 503
503 void KeyboardController::ShowAnimationFinished() { 504 void KeyboardController::ShowAnimationFinished() {
504 // Notify observers after animation finished to prevent reveal desktop 505 // Notify observers after animation finished to prevent reveal desktop
505 // background during animation. 506 // background during animation.
506 NotifyKeyboardBoundsChanging(container_->bounds()); 507 NotifyKeyboardBoundsChanging(container_->bounds());
507 ui_->EnsureCaretInWorkArea();
508 } 508 }
509 509
510 void KeyboardController::HideAnimationFinished() { 510 void KeyboardController::HideAnimationFinished() {
511 ui_->HideKeyboardContainer(container_.get()); 511 ui_->HideKeyboardContainer(container_.get());
512 for (KeyboardControllerObserver& observer : observer_list_) 512 for (KeyboardControllerObserver& observer : observer_list_)
513 observer.OnKeyboardHidden(); 513 observer.OnKeyboardHidden();
514 } 514 }
515 515
516 void KeyboardController::AdjustKeyboardBounds() { 516 void KeyboardController::AdjustKeyboardBounds() {
517 // When keyboard is floating, no resize is necessary. 517 // When keyboard is floating, no resize is necessary.
518 if (keyboard_mode_ == FLOATING) 518 if (keyboard_mode_ == FLOATING)
519 return; 519 return;
520 520
521 if (keyboard_mode_ == FULL_WIDTH) { 521 if (keyboard_mode_ == FULL_WIDTH) {
522 // TODO(bshe): revisit this logic after we decide to support resize virtual 522 // TODO(bshe): revisit this logic after we decide to support resize virtual
523 // keyboard. 523 // keyboard.
524 int keyboard_height = GetContainerWindow()->bounds().height(); 524 int keyboard_height = GetContainerWindow()->bounds().height();
525 const gfx::Rect& root_bounds = container_->GetRootWindow()->bounds(); 525 const gfx::Rect& root_bounds = container_->GetRootWindow()->bounds();
526 gfx::Rect new_bounds = root_bounds; 526 gfx::Rect new_bounds = root_bounds;
527 new_bounds.set_y(root_bounds.height() - keyboard_height); 527 new_bounds.set_y(root_bounds.height() - keyboard_height);
528 new_bounds.set_height(keyboard_height); 528 new_bounds.set_height(keyboard_height);
529 GetContainerWindow()->SetBounds(new_bounds); 529 GetContainerWindow()->SetBounds(new_bounds);
530 } 530 }
531 } 531 }
532 532
533 } // namespace keyboard 533 } // namespace keyboard
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698