diff options
| author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-18 16:19:08 +0000 |
|---|---|---|
| committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-18 16:20:24 +0000 |
| commit | f9d6189b0dd241b9402e72de5bcaf101c14afecf (patch) | |
| tree | 84c21d7dbefce278c6d190e0702bc2edebeaf51f /athena/wm | |
| parent | 2c5ffe51256a5c5e90295afb7b4bcb26257ca8dd (diff) | |
| download | chromium_src-f9d6189b0dd241b9402e72de5bcaf101c14afecf.zip chromium_src-f9d6189b0dd241b9402e72de5bcaf101c14afecf.tar.gz chromium_src-f9d6189b0dd241b9402e72de5bcaf101c14afecf.tar.bz2 | |
athena: Fix window transforms when split windows go into overview mode.
BUG=none
R=oshima@chromium.org
Review URL: https://codereview.chromium.org/478923003
Cr-Commit-Position: refs/heads/master@{#290266}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290266 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'athena/wm')
| -rw-r--r-- | athena/wm/window_overview_mode.cc | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/athena/wm/window_overview_mode.cc b/athena/wm/window_overview_mode.cc index d8e0597..8677e42 100644 --- a/athena/wm/window_overview_mode.cc +++ b/athena/wm/window_overview_mode.cc @@ -139,39 +139,49 @@ class WindowOverviewModeImpl : public WindowOverviewMode, // the windows. void ComputeTerminalStatesForAllWindows() { aura::Window::Windows windows = window_list_provider_->GetWindowList(); - size_t window_count = windows.size(); size_t index = 0; - const gfx::Size container_size = container_->bounds().size(); - - const int kGapBetweenWindowsBottom = 10; - const int kGapBetweenWindowsTop = 5; for (aura::Window::Windows::const_reverse_iterator iter = windows.rbegin(); iter != windows.rend(); ++iter, ++index) { aura::Window* window = (*iter); - - gfx::Transform top_transform; - int top = (window_count - index - 1) * kGapBetweenWindowsTop; - float x_translate = container_size.width() * (1 - kMinScale) / 2.; - top_transform.Translate(x_translate, top); - top_transform.Scale(kMinScale, kMinScale); - - gfx::Transform bottom_transform; - int bottom = GetScrollableHeight() - (index * kGapBetweenWindowsBottom); - x_translate = container_size.width() * (1 - kMaxScale) / 2.; - bottom_transform.Translate(x_translate, bottom - window->bounds().y()); - bottom_transform.Scale(kMaxScale, kMaxScale); + wm::SetShadowType(window, wm::SHADOW_TYPE_RECTANGULAR_ALWAYS_ACTIVE); WindowOverviewState* state = new WindowOverviewState; - state->top = top_transform; - state->bottom = bottom_transform; - state->progress = 0.f; window->SetProperty(kWindowOverviewState, state); - wm::SetShadowType(window, wm::SHADOW_TYPE_RECTANGULAR_ALWAYS_ACTIVE); + UpdateTerminalStateForWindowAtIndex(window, index, windows.size()); } } + void UpdateTerminalStateForWindowAtIndex(aura::Window* window, + size_t index, + size_t window_count) { + const int kGapBetweenWindowsBottom = 10; + const int kGapBetweenWindowsTop = 5; + + const int container_width = container_->bounds().width(); + const int window_width = window->bounds().width(); + const int window_x = window->bounds().x(); + gfx::Transform top_transform; + int top = (window_count - index - 1) * kGapBetweenWindowsTop; + float x_translate = + (container_width - (window_width * kMinScale)) / 2 - window_x; + top_transform.Translate(x_translate, top); + top_transform.Scale(kMinScale, kMinScale); + + gfx::Transform bottom_transform; + int bottom = GetScrollableHeight() - (index * kGapBetweenWindowsBottom); + x_translate = (container_width - (window_width * kMaxScale)) / 2 - window_x; + bottom_transform.Translate(x_translate, bottom - window->bounds().y()); + bottom_transform.Scale(kMaxScale, kMaxScale); + + WindowOverviewState* state = window->GetProperty(kWindowOverviewState); + CHECK(state); + state->top = top_transform; + state->bottom = bottom_transform; + state->progress = 0.f; + } + // Sets the initial position for the windows for the overview mode. void SetInitialWindowStates() { aura::Window::Windows windows = window_list_provider_->GetWindowList(); @@ -396,12 +406,11 @@ class WindowOverviewModeImpl : public WindowOverviewMode, ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator()); settings.SetPreemptionStrategy( ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); - WindowOverviewState* state = window->GetProperty(kWindowOverviewState); aura::Window* next = *(iter + 1); WindowOverviewState* next_state = next->GetProperty(kWindowOverviewState); - state->top = next_state->top; - state->bottom = next_state->bottom; + UpdateTerminalStateForWindowAtIndex(window, list.end() - iter, + list.size()); SetWindowProgress(window, next_state->progress); } |
