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

Unified Diff: ui/keyboard/keyboard_controller.cc

Issue 2445293002: Make the virtual keyboard show up on the display with input focus. (Closed)
Patch Set: rebase & update 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
Index: ui/keyboard/keyboard_controller.cc
diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc
index de8bcbede5c901a4e74957ae062b0b8b1685d146..90439615e13b26dcbec5e497f58a64130549af65 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/display.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/path.h"
#include "ui/gfx/skia_util.h"
@@ -165,8 +166,10 @@ 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),
@@ -295,7 +298,12 @@ void KeyboardController::SetKeyboardMode(KeyboardMode mode) {
void KeyboardController::ShowKeyboard(bool lock) {
set_lock_keyboard(lock);
- ShowKeyboardInternal();
+ ShowKeyboardInternal(display::Display::kInvalidDisplayID);
+}
+
+void KeyboardController::ShowKeyboardInSpecificDisplay(int64_t display_id) {
+ set_lock_keyboard(true);
+ ShowKeyboardInternal(display_id);
}
void KeyboardController::OnWindowHierarchyChanged(
@@ -392,11 +400,13 @@ void KeyboardController::OnInputMethodDestroyed(
}
void KeyboardController::OnShowImeIfNeeded() {
- if (IsKeyboardEnabled())
- ShowKeyboardInternal();
+ // Calling |ShowKeyboardInternal| may cause the movement of the keyboard to
+ // another display.
+ if (IsKeyboardEnabled() && !get_lock_keyboard())
+ ShowKeyboardInternal(display::Display::kInvalidDisplayID);
}
-void KeyboardController::ShowKeyboardInternal() {
+void KeyboardController::ShowKeyboardInternal(int64_t display_id) {
if (!container_.get())
return;
@@ -410,6 +420,10 @@ void KeyboardController::ShowKeyboardInternal() {
ui_->ReloadKeyboardIfNeeded();
+ if (layout_delegate_ != nullptr) {
+ layout_delegate_->MoveKeyboardToAnotherDisplayIfNeeded(display_id);
+ }
oshima 2016/11/08 17:26:05 nuke {}
yhanada 2016/11/14 22:48:47 Done.
+
if (keyboard_visible_) {
return;
} else if (ui_->GetKeyboardWindow()->bounds().height() == 0) {

Powered by Google App Engine
This is Rietveld 408576698