| Index: ash/virtual_keyboard_controller.cc
|
| diff --git a/ash/virtual_keyboard_controller.cc b/ash/virtual_keyboard_controller.cc
|
| index 3ecc0bc271c1f3164438eebbd4b1c4ef2de29217..2f46e5cdac97fe733c388e375ff4b2b7c09cadec 100644
|
| --- a/ash/virtual_keyboard_controller.cc
|
| +++ b/ash/virtual_keyboard_controller.cc
|
| @@ -50,13 +50,19 @@ VirtualKeyboardController::~VirtualKeyboardController() {
|
| }
|
|
|
| void VirtualKeyboardController::OnMaximizeModeStarted() {
|
| - if (!IsSmartVirtualKeyboardEnabled())
|
| + if (!IsSmartVirtualKeyboardEnabled()) {
|
| SetKeyboardEnabled(true);
|
| + } else {
|
| + UpdateKeyboardEnabled();
|
| + }
|
| }
|
|
|
| void VirtualKeyboardController::OnMaximizeModeEnded() {
|
| - if (!IsSmartVirtualKeyboardEnabled())
|
| + if (!IsSmartVirtualKeyboardEnabled()) {
|
| SetKeyboardEnabled(false);
|
| + } else {
|
| + UpdateKeyboardEnabled();
|
| + }
|
| }
|
|
|
| void VirtualKeyboardController::OnTouchscreenDeviceConfigurationChanged() {
|
| @@ -103,11 +109,16 @@ void VirtualKeyboardController::UpdateKeyboardEnabled() {
|
| ->IsMaximizeModeWindowManagerEnabled());
|
| return;
|
| }
|
| - SetKeyboardEnabled(!has_internal_keyboard_ && has_touchscreen_ &&
|
| + bool ignore_internal_keyboard = Shell::GetInstance()
|
| + ->maximize_mode_controller()
|
| + ->IsMaximizeModeWindowManagerEnabled();
|
| + bool is_internal_keyboard_active =
|
| + has_internal_keyboard_ && !ignore_internal_keyboard;
|
| + SetKeyboardEnabled(!is_internal_keyboard_active && has_touchscreen_ &&
|
| (!has_external_keyboard_ || ignore_external_keyboard_));
|
| ash::Shell::GetInstance()
|
| ->system_tray_notifier()
|
| - ->NotifyVirtualKeyboardSuppressionChanged(!has_internal_keyboard_ &&
|
| + ->NotifyVirtualKeyboardSuppressionChanged(!is_internal_keyboard_active &&
|
| has_touchscreen_ &&
|
| has_external_keyboard_);
|
| }
|
|
|