diff options
Diffstat (limited to 'ash/display/virtual_keyboard_window_controller.cc')
-rw-r--r-- | ash/display/virtual_keyboard_window_controller.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/ash/display/virtual_keyboard_window_controller.cc b/ash/display/virtual_keyboard_window_controller.cc index 7be0e47..7b9f295 100644 --- a/ash/display/virtual_keyboard_window_controller.cc +++ b/ash/display/virtual_keyboard_window_controller.cc @@ -7,6 +7,7 @@ #include "ash/display/display_controller.h" #include "ash/display/display_info.h" #include "ash/display/display_manager.h" +#include "ash/display/root_window_transformers.h" #include "ash/host/root_window_host_factory.h" #include "ash/root_window_controller.h" #include "ash/root_window_settings.h" @@ -16,6 +17,7 @@ #include "base/strings/utf_string_conversions.h" #include "ui/aura/env.h" #include "ui/aura/root_window.h" +#include "ui/aura/root_window_transformer.h" #include "ui/keyboard/keyboard_controller.h" namespace ash { @@ -61,6 +63,7 @@ void VirtualKeyboardWindowController::UpdateWindow( root_window_controller_->dispatcher()->host()->Show(); root_window_controller_->ActivateKeyboard( Shell::GetInstance()->keyboard_controller()); + FlipDisplay(); } else { aura::RootWindow* root_window = root_window_controller_->dispatcher(); GetRootWindowSettings(root_window->window())->display_id = @@ -78,5 +81,22 @@ void VirtualKeyboardWindowController::Close() { } } +void VirtualKeyboardWindowController::FlipDisplay() { + DisplayManager* display_manager = Shell::GetInstance()->display_manager(); + if (!display_manager->virtual_keyboard_root_window_enabled()) { + NOTREACHED() << "Attempting to flip virtual keyboard root window when it " + << "is not enabled."; + return; + } + display_manager->SetDisplayRotation( + display_manager->non_desktop_display().id(), gfx::Display::ROTATE_180); + + aura::RootWindow* root_window = root_window_controller_->dispatcher(); + scoped_ptr<aura::RootWindowTransformer> transformer( + internal::CreateRootWindowTransformerForDisplay(root_window->window(), + display_manager->non_desktop_display())); + root_window->host()->SetRootWindowTransformer(transformer.Pass()); +} + } // namespace internal } // namespace ash |