summaryrefslogtreecommitdiffstats
path: root/ash/accelerators
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-15 12:23:03 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-15 12:23:03 +0000
commitaf5ed956eb6372a4cc64d26dbbc934ebd784adeb (patch)
tree1a1786b2efdb69b9bd7c50c215113dd7963a65c9 /ash/accelerators
parentb6fd2de0da9846e36c45d49237b81066decbaf43 (diff)
downloadchromium_src-af5ed956eb6372a4cc64d26dbbc934ebd784adeb.zip
chromium_src-af5ed956eb6372a4cc64d26dbbc934ebd784adeb.tar.gz
chromium_src-af5ed956eb6372a4cc64d26dbbc934ebd784adeb.tar.bz2
2nd try
Add shortcut keys to ui scaling - Round root window size because it can be fractional size when root_window_scale_ is specified. - Remove scaling option from about:flags. - Rotate display where the mouse is in. BUG=179997,119268 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=188324 Review URL: https://codereview.chromium.org/12848004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188362 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/accelerators')
-rw-r--r--ash/accelerators/accelerator_controller.cc45
-rw-r--r--ash/accelerators/accelerator_table.cc17
-rw-r--r--ash/accelerators/accelerator_table.h2
3 files changed, 56 insertions, 8 deletions
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index 8194d90..a2656cf 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -154,7 +154,7 @@ bool HandleRotateActiveWindow() {
return true;
}
-const gfx::Display::Rotation GetNextRotation(gfx::Display::Rotation current) {
+gfx::Display::Rotation GetNextRotation(gfx::Display::Rotation current) {
switch (current) {
case gfx::Display::ROTATE_0:
return gfx::Display::ROTATE_90;
@@ -169,13 +169,40 @@ const gfx::Display::Rotation GetNextRotation(gfx::Display::Rotation current) {
return gfx::Display::ROTATE_0;
}
+float GetNextScale(float scale, int next) {
+ // These scales are equivalent to 1024, 1280, 1600 and 1920 pixel width
+ // respectively on 2560 pixel width 2x density display.
+ static const float kScales[] = {0.8f, 1.0f, 1.25f, 1.5f};
+ static const int kScaleTableSize = arraysize(kScales);
+ const float* location = std::find(kScales, kScales + kScaleTableSize, scale);
+ // Fallback to 1.0f if the |scale| wasn't in the list.
+ if (location == kScales + kScaleTableSize)
+ return 1.0f;
+ int index = std::distance(kScales, location) + next;
+ return kScales[std::min(kScaleTableSize - 1, std::max(0, index))];
+}
+
+bool HandleScaleUI(bool up) {
+ // UI Scaling is effective only on internal display.
+ int64 display_id = gfx::Display::InternalDisplayId();
+#if defined(OS_CHROMEOS)
+ // On linux desktop, allow ui scalacing on the first dislpay.
+ if (!base::chromeos::IsRunningOnChromeOS())
+ display_id = Shell::GetInstance()->display_manager()->first_display_id();
+#endif
+ const gfx::Display& display = Shell::GetInstance()->display_manager()->
+ GetDisplayForId(display_id);
+ const DisplayInfo& display_info = Shell::GetInstance()->display_manager()->
+ GetDisplayInfo(display);
+ Shell::GetInstance()->display_manager()->SetDisplayUIScale(
+ display.id(), GetNextScale(display_info.ui_scale(), up ? 1 : -1));
+ return true;
+}
+
// Rotates the screen.
bool HandleRotateScreen() {
- aura::Window* active_window = wm::GetActiveWindow();
- if (!active_window)
- return false;
- const gfx::Display& display =
- Shell::GetScreen()->GetDisplayNearestWindow(active_window);
+ gfx::Point point = Shell::GetScreen()->GetCursorScreenPoint();
+ gfx::Display display = Shell::GetScreen()->GetDisplayNearestPoint(point);
const DisplayInfo& display_info =
Shell::GetInstance()->display_manager()->GetDisplayInfo(display);
Shell::GetInstance()->display_manager()->SetDisplayRotation(
@@ -758,6 +785,10 @@ bool AcceleratorController::PerformAction(int action,
}
break;
}
+ case SCALE_UI_UP:
+ return HandleScaleUI(true /* up */);
+ case SCALE_UI_DOWN:
+ return HandleScaleUI(false /* down */);
case ROTATE_WINDOW:
return HandleRotateActiveWindow();
case ROTATE_SCREEN:
@@ -767,7 +798,7 @@ bool AcceleratorController::PerformAction(int action,
case TOGGLE_ROOT_WINDOW_FULL_SCREEN:
return HandleToggleRootWindowFullScreen();
case DISPLAY_TOGGLE_SCALE:
- internal::DisplayManager::ToggleDisplayScale();
+ internal::DisplayManager::ToggleDisplayScaleFactor();
return true;
case MAGNIFY_SCREEN_ZOOM_IN:
return HandleMagnifyScreen(1);
diff --git a/ash/accelerators/accelerator_table.cc b/ash/accelerators/accelerator_table.cc
index 54e4c5b..02de15d 100644
--- a/ash/accelerators/accelerator_table.cc
+++ b/ash/accelerators/accelerator_table.cc
@@ -77,7 +77,11 @@ const AcceleratorData kAcceleratorData[] = {
// Extra shortcut to lock the screen on linux desktop.
{ true, ui::VKEY_POWER, ui::EF_SHIFT_DOWN, LOCK_PRESSED },
{ false, ui::VKEY_POWER, ui::EF_SHIFT_DOWN, LOCK_RELEASED },
+ // Extra shortcut to rotate/scale up/down the screen on linux desktop.
{ true, ui::VKEY_F3, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, ROTATE_SCREEN },
+ { true, ui::VKEY_F2, ui::EF_CONTROL_DOWN , SCALE_UI_UP },
+ { true, ui::VKEY_F2,
+ ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, SCALE_UI_DOWN },
#endif // !defined(NDEBUG)
{ true, ui::VKEY_O, ui::EF_CONTROL_DOWN, OPEN_FILE_DIALOG },
{ true, ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
@@ -101,6 +105,10 @@ const AcceleratorData kAcceleratorData[] = {
NEW_INCOGNITO_WINDOW },
{ true, ui::VKEY_N, ui::EF_CONTROL_DOWN, NEW_WINDOW },
{ true, ui::VKEY_T, ui::EF_CONTROL_DOWN, NEW_TAB },
+ { true, ui::VKEY_BROWSER_BACK,
+ ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, SCALE_UI_UP },
+ { true, ui::VKEY_BROWSER_FORWARD,
+ ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, SCALE_UI_DOWN },
{ true, ui::VKEY_BROWSER_REFRESH,
ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, ROTATE_SCREEN },
{ true, ui::VKEY_BROWSER_REFRESH,
@@ -129,7 +137,8 @@ const AcceleratorData kAcceleratorData[] = {
{ true, ui::VKEY_F14, ui::EF_NONE, SHOW_KEYBOARD_OVERLAY },
{ true, ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
SHOW_MESSAGE_CENTER_BUBBLE },
- { true, ui::VKEY_BROWSER_BACK, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
+ { true, ui::VKEY_BROWSER_BACK,
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
SHOW_OAK },
{ true, ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
SHOW_SYSTEM_TRAY_BUBBLE },
@@ -228,6 +237,8 @@ const AcceleratorAction kActionsAllowedAtLoginOrLockScreen[] = {
VOLUME_UP,
ROTATE_SCREEN,
ROTATE_WINDOW,
+ SCALE_UI_UP,
+ SCALE_UI_DOWN,
#if !defined(NDEBUG)
PRINT_LAYER_HIERARCHY,
PRINT_VIEW_HIERARCHY,
@@ -294,6 +305,8 @@ const AcceleratorAction kNonrepeatableActions[] = {
CYCLE_FORWARD_MRU,
ROTATE_SCREEN,
ROTATE_WINDOW,
+ SCALE_UI_UP,
+ SCALE_UI_DOWN,
TOGGLE_MAXIMIZED,
WINDOW_MINIMIZE,
};
@@ -321,6 +334,8 @@ const AcceleratorAction kActionsAllowedInAppMode[] = {
POWER_RELEASED,
PREVIOUS_IME,
ROTATE_SCREEN,
+ SCALE_UI_UP,
+ SCALE_UI_DOWN,
SWAP_PRIMARY_DISPLAY,
SWITCH_IME, // Switch to another IME depending on the accelerator.
TOGGLE_CAPS_LOCK,
diff --git a/ash/accelerators/accelerator_table.h b/ash/accelerators/accelerator_table.h
index f8d99ac..c95a048 100644
--- a/ash/accelerators/accelerator_table.h
+++ b/ash/accelerators/accelerator_table.h
@@ -47,6 +47,8 @@ enum AcceleratorAction {
RESTORE_TAB,
ROTATE_SCREEN,
ROTATE_WINDOW,
+ SCALE_UI_DOWN,
+ SCALE_UI_UP,
SELECT_LAST_WIN,
SELECT_WIN_0,
SELECT_WIN_1,