Index: ash/launcher/launcher_view.cc |
diff --git a/ash/launcher/launcher_view.cc b/ash/launcher/launcher_view.cc |
index d674bb343f3ed6a78c2009631531d8012f5e78d0..c7fa01eb10c08481b3865d45593305612e6e748d 100644 |
--- a/ash/launcher/launcher_view.cc |
+++ b/ash/launcher/launcher_view.cc |
@@ -25,6 +25,7 @@ |
#include "ui/views/controls/button/image_button.h" |
#include "ui/views/controls/menu/menu_model_adapter.h" |
#include "ui/views/controls/menu/menu_runner.h" |
+#include "ui/views/focus/focus_manager.h" |
#include "ui/views/widget/widget.h" |
using ui::Animation; |
@@ -188,9 +189,13 @@ LauncherView::LauncherView(LauncherModel* model) |
dragging_(NULL), |
drag_view_(NULL), |
drag_offset_(0), |
- start_drag_index_(-1) { |
+ start_drag_index_(-1), |
+ ctrl_forward_key_(ui::VKEY_F2, false, true, false), |
+ ctrl_back_key_(ui::VKEY_F1, false, true, false) { |
DCHECK(model_); |
bounds_animator_.reset(new views::BoundsAnimator(this)); |
+ AddAccelerator(ctrl_forward_key_); |
+ AddAccelerator(ctrl_back_key_); |
} |
LauncherView::~LauncherView() { |
@@ -493,6 +498,28 @@ void LauncherView::OnBoundsChanged(const gfx::Rect& previous_bounds) { |
LayoutToIdealBounds(); |
} |
+bool LauncherView::AcceleratorPressed(const ui::Accelerator& accelerator) { |
+ views::FocusManager* focus_manager = GetFocusManager(); |
+ const views::View* focused_view = focus_manager->GetFocusedView(); |
+ if (!Contains(focused_view)) |
+ return false; |
+ |
+ ShellDelegate* delegate = Shell::GetInstance()->delegate(); |
+ if (!delegate) |
+ return false; |
+ |
+ switch (accelerator.key_code()) { |
+ case ui::VKEY_F1: |
+ delegate->RotateFocus(true); |
+ return true; |
+ case ui::VKEY_F2: |
+ delegate->RotateFocus(false); |
+ return true; |
+ default: |
+ return false; |
+ } |
+} |
+ |
void LauncherView::LauncherItemAdded(int model_index) { |
CancelDrag(NULL); |