| Index: ui/app_list/views/contents_view.cc
|
| diff --git a/ui/app_list/views/contents_view.cc b/ui/app_list/views/contents_view.cc
|
| index 1e299d706a7abd58dcb2d8cb63ac79bbe2cb4f2a..3895c96f151ecea80e43c4b16827128d06d55b56 100644
|
| --- a/ui/app_list/views/contents_view.cc
|
| +++ b/ui/app_list/views/contents_view.cc
|
| @@ -352,6 +352,26 @@ int ContentsView::AddLauncherPage(views::View* view,
|
| return page_index;
|
| }
|
|
|
| +gfx::Rect ContentsView::GetOnscreenPageBounds(int page_index) const {
|
| + AppListModel::State state = GetStateForPageIndex(page_index);
|
| + bool fills_contents_view =
|
| + state == AppListModel::STATE_CUSTOM_LAUNCHER_PAGE ||
|
| + state == AppListModel::STATE_START;
|
| + return fills_contents_view ? GetContentsBounds() : GetDefaultContentsBounds();
|
| +}
|
| +
|
| +gfx::Rect ContentsView::GetOffscreenPageBounds(int page_index) const {
|
| + AppListModel::State state = GetStateForPageIndex(page_index);
|
| + gfx::Rect bounds(GetOnscreenPageBounds(page_index));
|
| + // The start page and search page origins are above; all other pages' origins
|
| + // are below.
|
| + bool origin_above = state == AppListModel::STATE_START ||
|
| + state == AppListModel::STATE_SEARCH_RESULTS;
|
| + bounds.set_y(origin_above ? -bounds.height()
|
| + : GetContentsBounds().height() + bounds.y());
|
| + return bounds;
|
| +}
|
| +
|
| gfx::Rect ContentsView::GetDefaultSearchBoxBounds() const {
|
| gfx::Rect search_box_bounds(0, 0, GetDefaultContentsSize().width(),
|
| GetSearchBoxView()->GetPreferredSize().height());
|
| @@ -370,7 +390,8 @@ gfx::Rect ContentsView::GetSearchBoxBoundsForState(
|
| // Convert to ContentsView space, assuming that the StartPageView is in the
|
| // ContentsView's default bounds.
|
| return start_page_view_->GetSearchBoxBounds() +
|
| - GetDefaultContentsBounds().OffsetFromOrigin();
|
| + GetOnscreenPageBounds(GetPageIndexForState(state))
|
| + .OffsetFromOrigin();
|
| }
|
|
|
| return GetDefaultSearchBoxBounds();
|
| @@ -459,14 +480,9 @@ void ContentsView::Layout() {
|
| // Move the current view onto the screen, and all other views off screen to
|
| // the left. (Since we are not animating, we don't need to be careful about
|
| // which side we place the off-screen views onto.)
|
| - gfx::Rect rect(GetDefaultContentsBounds());
|
| - // Custom pages are aligned to the top of the window, not under the search
|
| - // box.
|
| - double progress = 0;
|
| - if (IsStateActive(AppListModel::STATE_CUSTOM_LAUNCHER_PAGE)) {
|
| - rect = GetContentsBounds();
|
| - progress = 1;
|
| - }
|
| + gfx::Rect rect = GetOnscreenPageBounds(GetActivePageIndex());
|
| + double progress =
|
| + IsStateActive(AppListModel::STATE_CUSTOM_LAUNCHER_PAGE) ? 1 : 0;
|
|
|
| // Notify the custom launcher page that the active page has changed.
|
| app_list_main_view_->view_delegate()->CustomLauncherPageAnimationChanged(
|
|
|