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

Unified Diff: ui/keyboard/keyboard_controller.cc

Issue 2445293002: Make the virtual keyboard show up on the display with input focus. (Closed)
Patch Set: fix one more compilation error on Windows Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/keyboard/keyboard_controller.h ('k') | ui/keyboard/keyboard_controller_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/keyboard/keyboard_controller.cc
diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc
index de8bcbede5c901a4e74957ae062b0b8b1685d146..fa52b2add4fe432f747fd09dec87fd7b4f03f465 100644
--- a/ui/keyboard/keyboard_controller.cc
+++ b/ui/keyboard/keyboard_controller.cc
@@ -22,6 +22,7 @@
#include "ui/base/ime/text_input_client.h"
#include "ui/compositor/layer_animation_observer.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
+#include "ui/display/types/display_constants.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/path.h"
#include "ui/gfx/skia_util.h"
@@ -165,12 +166,14 @@ void CallbackAnimationObserver::OnLayerAnimationAborted(
// static
KeyboardController* KeyboardController::instance_ = NULL;
-KeyboardController::KeyboardController(KeyboardUI* ui)
+KeyboardController::KeyboardController(KeyboardUI* ui,
+ KeyboardLayoutDelegate* delegate)
: ui_(ui),
+ layout_delegate_(delegate),
input_method_(NULL),
keyboard_visible_(false),
show_on_resize_(false),
- lock_keyboard_(false),
+ keyboard_locked_(false),
keyboard_mode_(FULL_WIDTH),
type_(ui::TEXT_INPUT_TYPE_NONE),
weak_factory_(this) {
@@ -243,7 +246,7 @@ void KeyboardController::HideKeyboard(HideReason reason) {
NotifyKeyboardBoundsChanging(gfx::Rect());
- set_lock_keyboard(false);
+ set_keyboard_locked(false);
ui::LayerAnimator* container_animator = container_->layer()->GetAnimator();
animation_observer_.reset(new CallbackAnimationObserver(
@@ -294,8 +297,13 @@ void KeyboardController::SetKeyboardMode(KeyboardMode mode) {
}
void KeyboardController::ShowKeyboard(bool lock) {
- set_lock_keyboard(lock);
- ShowKeyboardInternal();
+ set_keyboard_locked(lock);
+ ShowKeyboardInternal(display::kInvalidDisplayId);
+}
+
+void KeyboardController::ShowKeyboardInDisplay(int64_t display_id) {
+ set_keyboard_locked(true);
+ ShowKeyboardInternal(display_id);
}
void KeyboardController::OnWindowHierarchyChanged(
@@ -359,7 +367,7 @@ void KeyboardController::OnTextInputStateChanged(
type_ = client ? client->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE;
- if (type_ == ui::TEXT_INPUT_TYPE_NONE && !lock_keyboard_) {
+ if (type_ == ui::TEXT_INPUT_TYPE_NONE && !keyboard_locked_) {
if (keyboard_visible_) {
// Set the visibility state here so that any queries for visibility
// before the timer fires returns the correct future value.
@@ -392,11 +400,12 @@ void KeyboardController::OnInputMethodDestroyed(
}
void KeyboardController::OnShowImeIfNeeded() {
- if (IsKeyboardEnabled())
- ShowKeyboardInternal();
+ // Calling |ShowKeyboardInternal| may move the keyboard to another display.
+ if (IsKeyboardEnabled() && !keyboard_locked())
+ ShowKeyboardInternal(display::kInvalidDisplayId);
}
-void KeyboardController::ShowKeyboardInternal() {
+void KeyboardController::ShowKeyboardInternal(int64_t display_id) {
if (!container_.get())
return;
@@ -410,6 +419,13 @@ void KeyboardController::ShowKeyboardInternal() {
ui_->ReloadKeyboardIfNeeded();
+ if (layout_delegate_ != nullptr) {
+ if (display_id != display::kInvalidDisplayId)
+ layout_delegate_->MoveKeyboardToDisplay(display_id);
+ else
+ layout_delegate_->MoveKeyboardToTouchableDisplay();
+ }
+
if (keyboard_visible_) {
return;
} else if (ui_->GetKeyboardWindow()->bounds().height() == 0) {
« no previous file with comments | « ui/keyboard/keyboard_controller.h ('k') | ui/keyboard/keyboard_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698