| Index: ash/wm/window_cycle_controller.cc
|
| diff --git a/ash/wm/window_cycle_controller.cc b/ash/wm/window_cycle_controller.cc
|
| index 2aae2a67641641840d468baa7ea7281f68104782..86f3cf8ca643f5961097385f217620c2d2654c43 100644
|
| --- a/ash/wm/window_cycle_controller.cc
|
| +++ b/ash/wm/window_cycle_controller.cc
|
| @@ -149,13 +149,24 @@ void WindowCycleController::HandleCycleWindow(Direction direction,
|
| }
|
| }
|
|
|
| +void WindowCycleController::HandleLinearCycleWindow() {
|
| + if (!CanCycle() || IsCycling())
|
| + return;
|
| +
|
| + // Use the reversed list of windows to prevent a 2-cycle of the most recent
|
| + // windows occurring.
|
| + WindowCycleList cycle_list(BuildWindowList(NULL,true));
|
| + cycle_list.Step(WindowCycleList::FORWARD);
|
| +}
|
| +
|
| void WindowCycleController::AltKeyReleased() {
|
| StopCycling();
|
| }
|
|
|
| // static
|
| std::vector<aura::Window*> WindowCycleController::BuildWindowList(
|
| - const std::list<aura::Window*>* mru_windows) {
|
| + const std::list<aura::Window*>* mru_windows,
|
| + bool top_most_at_end) {
|
| WindowCycleList::WindowList windows;
|
| Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
|
|
|
| @@ -198,7 +209,8 @@ std::vector<aura::Window*> WindowCycleController::BuildWindowList(
|
| }
|
|
|
| // Window cycling expects the topmost window at the front of the list.
|
| - std::reverse(windows.begin(), windows.end());
|
| + if (!top_most_at_end)
|
| + std::reverse(windows.begin(), windows.end());
|
|
|
| return windows;
|
| }
|
| @@ -225,7 +237,7 @@ void WindowCycleController::OnRootWindowAdded(aura::RootWindow* root_window) {
|
| // WindowCycleController, private:
|
|
|
| void WindowCycleController::StartCycling() {
|
| - windows_.reset(new WindowCycleList(BuildWindowList(&mru_windows_)));
|
| + windows_.reset(new WindowCycleList(BuildWindowList(&mru_windows_, false)));
|
| }
|
|
|
| void WindowCycleController::Step(Direction direction) {
|
|
|