summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
Diffstat (limited to 'ash')
-rw-r--r--ash/accelerators/accelerator_controller.cc36
-rw-r--r--ash/accelerators/accelerator_table.cc4
-rw-r--r--ash/accelerators/accelerator_table.h4
-rw-r--r--ash/magnifier/magnification_controller.cc61
-rw-r--r--ash/magnifier/magnification_controller.h3
5 files changed, 72 insertions, 36 deletions
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index 95490f8..287bcec 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -219,6 +219,24 @@ bool HandleToggleRootWindowFullScreen() {
return true;
}
+// Magnify the screen
+bool HandleMagnifyScreen(int delta_index) {
+ // TODO(yoshiki): Create the class like MagnifierStepScaleController, and
+ // move the following scale control to it.
+ float scale =
+ ash::Shell::GetInstance()->magnification_controller()->GetScale();
+ // Calculate rounded logarithm (base kMagnificationFactor) of scale.
+ int scale_index =
+ std::floor(std::log(scale) / std::log(kMagnificationFactor) + 0.5);
+
+ int new_scale_index = std::max(0, std::min(8, scale_index + delta_index));
+
+ ash::Shell::GetInstance()->magnification_controller()->
+ SetScale(std::pow(kMagnificationFactor, new_scale_index), true);
+
+ return true;
+}
+
#if !defined(NDEBUG)
bool HandlePrintLayerHierarchy() {
aura::RootWindow* root_window = Shell::GetPrimaryRootWindow();
@@ -244,22 +262,6 @@ bool HandlePrintWindowHierarchy() {
return true;
}
-// Magnify the screen
-bool HandleMagnifyScreen(int delta_index) {
- float scale =
- ash::Shell::GetInstance()->magnification_controller()->GetScale();
- // Calculate rounded logarithm (base kMagnificationFactor) of scale.
- int scale_index =
- std::floor(std::log(scale) / std::log(kMagnificationFactor) + 0.5);
-
- int new_scale_index = std::max(0, std::min(8, scale_index + delta_index));
-
- ash::Shell::GetInstance()->magnification_controller()->
- SetScale(std::pow(kMagnificationFactor, new_scale_index), true);
-
- return true;
-}
-
#endif // !defined(NDEBUG)
} // namespace
@@ -595,11 +597,11 @@ bool AcceleratorController::PerformAction(int action,
if (DebugShortcutsEnabled())
internal::MultiMonitorManager::ToggleMonitorScale();
return true;
-#if !defined(NDEBUG)
case MAGNIFY_SCREEN_ZOOM_IN:
return HandleMagnifyScreen(1);
case MAGNIFY_SCREEN_ZOOM_OUT:
return HandleMagnifyScreen(-1);
+#if !defined(NDEBUG)
case PRINT_LAYER_HIERARCHY:
return HandlePrintLayerHierarchy();
case PRINT_WINDOW_HIERARCHY:
diff --git a/ash/accelerators/accelerator_table.cc b/ash/accelerators/accelerator_table.cc
index f6b2ab4..409fde5 100644
--- a/ash/accelerators/accelerator_table.cc
+++ b/ash/accelerators/accelerator_table.cc
@@ -76,6 +76,8 @@ const AcceleratorData kAcceleratorData[] = {
{ true, ui::VKEY_VOLUME_UP, ui::EF_NONE, VOLUME_UP },
{ true, ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, FOCUS_LAUNCHER },
{ true, ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, FOCUS_SYSTEM_TRAY },
+ { true, ui::VKEY_F7, ui::EF_CONTROL_DOWN, MAGNIFY_SCREEN_ZOOM_IN},
+ { true, ui::VKEY_F6, ui::EF_CONTROL_DOWN, MAGNIFY_SCREEN_ZOOM_OUT},
{ true, ui::VKEY_OEM_2, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
SHOW_KEYBOARD_OVERLAY },
{ true, ui::VKEY_OEM_2,
@@ -118,8 +120,6 @@ const AcceleratorData kAcceleratorData[] = {
{ true, ui::VKEY_HOME, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
MONITOR_TOGGLE_SCALE },
#if !defined(NDEBUG)
- { true, ui::VKEY_OEM_4, ui::EF_CONTROL_DOWN, MAGNIFY_SCREEN_ZOOM_IN},
- { true, ui::VKEY_OEM_6, ui::EF_CONTROL_DOWN, MAGNIFY_SCREEN_ZOOM_OUT},
{ true, ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
PRINT_LAYER_HIERARCHY },
{ true, ui::VKEY_W, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
diff --git a/ash/accelerators/accelerator_table.h b/ash/accelerators/accelerator_table.h
index fca8ba6..23961b5 100644
--- a/ash/accelerators/accelerator_table.h
+++ b/ash/accelerators/accelerator_table.h
@@ -25,6 +25,8 @@ enum AcceleratorAction {
FOCUS_NEXT_PANE,
FOCUS_PREVIOUS_PANE,
FOCUS_SYSTEM_TRAY,
+ MAGNIFY_SCREEN_ZOOM_IN,
+ MAGNIFY_SCREEN_ZOOM_OUT,
NEW_INCOGNITO_WINDOW,
NEW_TAB,
NEW_WINDOW,
@@ -72,8 +74,6 @@ enum AcceleratorAction {
TOGGLE_DESKTOP_BACKGROUND_MODE,
TOGGLE_ROOT_WINDOW_FULL_SCREEN,
#if !defined(NDEBUG)
- MAGNIFY_SCREEN_ZOOM_IN,
- MAGNIFY_SCREEN_ZOOM_OUT,
PRINT_LAYER_HIERARCHY,
PRINT_WINDOW_HIERARCHY,
#endif
diff --git a/ash/magnifier/magnification_controller.cc b/ash/magnifier/magnification_controller.cc
index dc15483..602e95a 100644
--- a/ash/magnifier/magnification_controller.cc
+++ b/ash/magnifier/magnification_controller.cc
@@ -19,10 +19,12 @@
namespace {
-const float kMaximumMagnifiScale = 4.0f;
-const float kMaximumMagnifiScaleThreshold = 4.0f;
-const float kMinimumMagnifiScale = 1.0f;
-const float kMinimumMagnifiScaleThreshold = 1.1f;
+const float kMaxMagnifiedScale = 4.0f;
+const float kMaxMagnifiedScaleThreshold = 4.0f;
+const float kMinMagnifiedScaleThreshold = 1.1f;
+const float kNonMagnifiedScale = 1.0f;
+
+const float kInitialMagnifiedScale = 2.0f;
} // namespace
@@ -40,6 +42,7 @@ class MagnificationControllerImpl : virtual public MagnificationController,
virtual ~MagnificationControllerImpl();
// MagnificationController overrides:
+ virtual void SetEnabled(bool enabled) OVERRIDE;
virtual void SetScale(float scale, bool animate) OVERRIDE;
virtual float GetScale() const OVERRIDE { return scale_; }
virtual void MoveWindow(int x, int y, bool animate) OVERRIDE;
@@ -103,6 +106,8 @@ class MagnificationControllerImpl : virtual public MagnificationController,
// Otherwise, false.
bool is_on_zooming_;
+ bool is_enabled_;
+
// Current scale, origin (left-top) position of the magnification window.
float scale_;
gfx::Point origin_;
@@ -116,7 +121,8 @@ class MagnificationControllerImpl : virtual public MagnificationController,
MagnificationControllerImpl::MagnificationControllerImpl()
: root_window_(ash::Shell::GetPrimaryRootWindow()),
is_on_zooming_(false),
- scale_(1.0f) {
+ is_enabled_(false),
+ scale_(kNonMagnifiedScale) {
Shell::GetInstance()->AddEnvEventFilter(this);
}
@@ -306,19 +312,19 @@ gfx::Rect MagnificationControllerImpl::GetWindowRectDIP(float scale) const {
}
bool MagnificationControllerImpl::IsMagnified() const {
- return scale_ >= kMinimumMagnifiScaleThreshold;
+ return scale_ >= kMinMagnifiedScaleThreshold;
}
void MagnificationControllerImpl::ValidateScale(float* scale) {
- // Adjust the scale to just |kMinimumMagnifiScale| if scale is smaller than
- // |kMinimumMagnifiScaleThreshold|;
- if (*scale < kMinimumMagnifiScaleThreshold)
- *scale = kMinimumMagnifiScale;
-
- // Adjust the scale to just |kMinimumMagnifiScale| if scale is bigger than
- // |kMinimumMagnifiScaleThreshold|;
- if (*scale > kMaximumMagnifiScaleThreshold)
- *scale = kMaximumMagnifiScale;
+ // Adjust the scale to just |kNonMagnifiedScale| if scale is smaller than
+ // |kMinMagnifiedScaleThreshold|;
+ if (*scale < kMinMagnifiedScaleThreshold)
+ *scale = kNonMagnifiedScale;
+
+ // Adjust the scale to just |kMinMagnifiedScale| if scale is bigger than
+ // |kMinMagnifiedScaleThreshold|;
+ if (*scale > kMaxMagnifiedScaleThreshold)
+ *scale = kMaxMagnifiedScale;
}
void MagnificationControllerImpl::OnImplicitAnimationsCompleted() {
@@ -330,6 +336,9 @@ void MagnificationControllerImpl::OnImplicitAnimationsCompleted() {
// MagnificationControllerImpl: MagnificationController implementation
void MagnificationControllerImpl::SetScale(float scale, bool animate) {
+ if (!is_enabled_)
+ return;
+
ValidateScale(&scale);
// Try not to change the point which the mouse cursor indicates to.
@@ -341,26 +350,48 @@ void MagnificationControllerImpl::SetScale(float scale, bool animate) {
}
void MagnificationControllerImpl::MoveWindow(int x, int y, bool animate) {
+ if (!is_enabled_)
+ return;
+
Redraw(gfx::Point(x, y), scale_, animate);
}
void MagnificationControllerImpl::MoveWindow(const gfx::Point& point,
bool animate) {
+ if (!is_enabled_)
+ return;
+
Redraw(point, scale_, animate);
}
void MagnificationControllerImpl::EnsureRectIsVisible(
const gfx::Rect& target_rect,
bool animate) {
+ if (!is_enabled_)
+ return;
+
EnsureRectIsVisibleWithScale(target_rect, scale_, animate);
}
void MagnificationControllerImpl::EnsurePointIsVisible(
const gfx::Point& point,
bool animate) {
+ if (!is_enabled_)
+ return;
+
EnsurePointIsVisibleWithScale(point, scale_, animate);
}
+void MagnificationControllerImpl::SetEnabled(bool enabled) {
+ if (enabled) {
+ is_enabled_ = enabled;
+ SetScale(kInitialMagnifiedScale, true);
+ } else {
+ SetScale(kNonMagnifiedScale, true);
+ is_enabled_ = enabled;
+ }
+}
+
////////////////////////////////////////////////////////////////////////////////
// MagnificationControllerImpl: aura::EventFilter implementation
diff --git a/ash/magnifier/magnification_controller.h b/ash/magnifier/magnification_controller.h
index a97d171..f392a9b 100644
--- a/ash/magnifier/magnification_controller.h
+++ b/ash/magnifier/magnification_controller.h
@@ -28,6 +28,9 @@ class MagnificationController {
// returned object.
static MagnificationController* CreateInstance();
+ // Enables (or disables if |enabled| is false) screen magnifier feature.
+ virtual void SetEnabled(bool enabled) = 0;
+
// Sets the magnification ratio. 1.0f means no magnification.
virtual void SetScale(float scale, bool animate) = 0;
// Returns the current magnification ratio.