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_); |
} |