summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 02:40:21 +0000
committerbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 02:40:21 +0000
commitbf058c4b21346faec56398cae07f4b5dabd98533 (patch)
tree440e7be9690173894428f11e454e035cc72f065e
parentfd3f3dc9fb1216d1e185681741e2f8afbef47347 (diff)
downloadchromium_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.cc6
-rw-r--r--ash/display/display_manager.h8
-rw-r--r--ash/display/virtual_keyboard_window_controller.cc20
-rw-r--r--ash/display/virtual_keyboard_window_controller.h4
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();
}