diff options
Diffstat (limited to 'ash')
-rw-r--r-- | ash/accelerators/accelerator_controller.cc | 36 | ||||
-rw-r--r-- | ash/accelerators/accelerator_table.cc | 4 | ||||
-rw-r--r-- | ash/accelerators/accelerator_table.h | 4 | ||||
-rw-r--r-- | ash/magnifier/magnification_controller.cc | 61 | ||||
-rw-r--r-- | ash/magnifier/magnification_controller.h | 3 |
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. |