diff options
author | bshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 02:40:21 +0000 |
---|---|---|
committer | bshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 02:40:21 +0000 |
commit | bf058c4b21346faec56398cae07f4b5dabd98533 (patch) | |
tree | 440e7be9690173894428f11e454e035cc72f065e | |
parent | fd3f3dc9fb1216d1e185681741e2f8afbef47347 (diff) | |
download | chromium_src-bf058c4b21346faec56398cae07f4b5dabd98533.zip chromium_src-bf058c4b21346faec56398cae07f4b5dabd98533.tar.gz chromium_src-bf058c4b21346faec56398cae07f4b5dabd98533.tar.bz2 |
Rotate vk display 180 for easier experiment
BUG=319493
Review URL: https://codereview.chromium.org/62103019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236107 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ash/display/display_manager.cc | 6 | ||||
-rw-r--r-- | ash/display/display_manager.h | 8 | ||||
-rw-r--r-- | ash/display/virtual_keyboard_window_controller.cc | 20 | ||||
-rw-r--r-- | ash/display/virtual_keyboard_window_controller.h | 4 |
4 files changed, 36 insertions, 2 deletions
diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc index 855221b..e9a5ac6 100644 --- a/ash/display/display_manager.cc +++ b/ash/display/display_manager.cc @@ -380,6 +380,12 @@ void DisplayManager::SetDisplayRotation(int64 display_id, display_info_list.push_back(info); } AddMirrorDisplayInfoIfAny(&display_info_list); + if (virtual_keyboard_root_window_enabled() && + display_id == non_desktop_display_.id()) { + DisplayInfo info = GetDisplayInfo(display_id); + info.set_rotation(rotation); + display_info_list.push_back(info); + } UpdateDisplays(display_info_list); } diff --git a/ash/display/display_manager.h b/ash/display/display_manager.h index 4b53dac..ef67809 100644 --- a/ash/display/display_manager.h +++ b/ash/display/display_manager.h @@ -247,6 +247,10 @@ class ASH_EXPORT DisplayManager return second_display_mode_ == MIRRORING; }; + bool virtual_keyboard_root_window_enabled() const { + return second_display_mode_ == VIRTUAL_KEYBOARD; + }; + // Sets/gets second display mode. void SetSecondDisplayMode(SecondDisplayMode mode); SecondDisplayMode second_display_mode() const { @@ -313,7 +317,7 @@ private: int64 first_display_id_; - // List of current active dispays. + // List of current active displays. DisplayList displays_; int num_connected_displays_; @@ -329,7 +333,7 @@ private: // When set to true, the host window's resize event updates // the display's size. This is set to true when running on // desktop environment (for debugging) so that resizing the host - // window wil update the display properly. This is set to false + // window will update the display properly. This is set to false // on device as well as during the unit tests. bool change_display_upon_host_resize_; 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 diff --git a/ash/display/virtual_keyboard_window_controller.h b/ash/display/virtual_keyboard_window_controller.h index 88db57d..6a46659 100644 --- a/ash/display/virtual_keyboard_window_controller.h +++ b/ash/display/virtual_keyboard_window_controller.h @@ -8,6 +8,7 @@ #include "ash/ash_export.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" +#include "ui/gfx/display.h" namespace keyboard { class KeyboardController; @@ -42,6 +43,9 @@ class ASH_EXPORT VirtualKeyboardWindowController { private: friend class test::VirtualKeyboardWindowControllerTest; + // Rotates virtual keyboard display by 180 degrees. + void FlipDisplay(); + RootWindowController* root_window_controller_for_test() { return root_window_controller_.get(); } |