Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(410)

Unified Diff: ui/app_list/views/app_list_main_view.cc

Issue 27438002: Store AppItems as pages in AppListModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698