Index: ui/app_list/views/app_list_main_view.cc |
diff --git a/ui/app_list/views/app_list_main_view.cc b/ui/app_list/views/app_list_main_view.cc |
index 792c5bd8355bdfa59d059de8d239026b526b92cb..10faa0a3fa0ef2dcb3f86f81685833d560cb1508 100644 |
--- a/ui/app_list/views/app_list_main_view.cc |
+++ b/ui/app_list/views/app_list_main_view.cc |
@@ -148,6 +148,9 @@ void AppListMainView::SetDragAndDropHostOfCurrentAppList( |
void AppListMainView::PreloadIcons(PaginationModel* pagination_model, |
gfx::NativeView parent) { |
+ if (model_->GetNumAppPages() == 0) |
+ return; |
+ |
ui::ScaleFactor scale_factor = ui::SCALE_FACTOR_100P; |
if (parent) |
scale_factor = ui::GetScaleFactorForNativeView(parent); |
@@ -155,17 +158,16 @@ void AppListMainView::PreloadIcons(PaginationModel* pagination_model, |
float scale = ui::GetImageScale(scale_factor); |
// |pagination_model| could have -1 as the initial selected page and |
// assumes first page (i.e. index 0) will be used in this case. |
- const int selected_page = std::max(0, pagination_model->selected_page()); |
- |
- const int tiles_per_page = kPreferredCols * kPreferredRows; |
- const int start_model_index = selected_page * tiles_per_page; |
- const int end_model_index = std::min( |
- static_cast<int>(model_->apps()->item_count()), |
- start_model_index + tiles_per_page); |
- |
+ size_t selected_page = 0; |
+ if (pagination_model->selected_page() > 0) { |
+ selected_page = static_cast<size_t>(pagination_model->selected_page()); |
+ selected_page = std::min(selected_page, model_->GetNumAppPages() - 1); |
+ } |
pending_icon_loaders_.clear(); |
- for (int i = start_model_index; i < end_model_index; ++i) { |
- AppListItemModel* item = model_->apps()->GetItemAt(i); |
+ const AppListModel::AppItems& apps = |
+ model_->GetAppItemsForPage(selected_page); |
+ for (size_t i = 0; i < apps.item_count(); ++i) { |
+ AppListItemModel* item = model_->GetItemAt(selected_page, i); |
if (item->icon().HasRepresentation(scale)) |
continue; |