Index: ui/app_list/cocoa/apps_grid_controller.mm |
diff --git a/ui/app_list/cocoa/apps_grid_controller.mm b/ui/app_list/cocoa/apps_grid_controller.mm |
index 5fad26fe8d5c058bab659fd6983c0e3d52376a9f..48f16f80403348c9a3e55723c8d637cea8df0be9 100644 |
--- a/ui/app_list/cocoa/apps_grid_controller.mm |
+++ b/ui/app_list/cocoa/apps_grid_controller.mm |
@@ -93,26 +93,30 @@ NSTimeInterval g_scroll_duration = 0.18; |
namespace app_list { |
-class AppsGridDelegateBridge : public ui::ListModelObserver { |
+class AppsGridDelegateBridge : public AppListModelObserver { |
public: |
AppsGridDelegateBridge(AppsGridController* parent) : parent_(parent) {} |
private: |
// Overridden from ui::ListModelObserver: |
- virtual void ListItemsAdded(size_t start, size_t count) OVERRIDE { |
- [parent_ listItemsAdded:start |
+ virtual void OnListItemsAdded(size_t page_index, |
+ size_t start, size_t count) OVERRIDE { |
+ size_t start_index = page_index * kItemsPerPage + start; |
+ [parent_ listItemsAdded:start_index |
count:count]; |
} |
- virtual void ListItemsRemoved(size_t start, size_t count) OVERRIDE { |
- [parent_ listItemsRemoved:start |
+ virtual void OnListItemsRemoved(size_t page_index, |
+ size_t start, size_t count) OVERRIDE { |
+ size_t start_index = page_index * kItemsPerPage + start; |
+ [parent_ listItemsRemoved:start_index |
count:count]; |
} |
- virtual void ListItemMoved(size_t index, size_t target_index) OVERRIDE { |
- [parent_ listItemMovedFromIndex:index |
- toModelIndex:target_index]; |
- } |
- virtual void ListItemsChanged(size_t start, size_t count) OVERRIDE { |
- NOTREACHED(); |
+ virtual void OnListItemMoved(size_t page_index, |
+ size_t index, size_t target_index) OVERRIDE { |
+ size_t from_index = page_index * kItemsPerPage + index; |
+ size_t to_index = page_index * kItemsPerPage + target_index; |
+ [parent_ listItemMovedFromIndex:from_index |
+ toModelIndex:to_index]; |
} |
AppsGridController* parent_; // Weak, owns us. |
@@ -188,7 +192,7 @@ class AppsGridDelegateBridge : public ui::ListModelObserver { |
- (void)setModel:(scoped_ptr<app_list::AppListModel>)newModel { |
if (model_) { |
- model_->apps()->RemoveObserver(bridge_.get()); |
+ model_->RemoveObserver(bridge_.get()); |
// Since the model is about to be deleted, and the AppKit objects might be |
// sitting in an NSAutoreleasePool, ensure there are no references to the |
@@ -205,9 +209,12 @@ class AppsGridDelegateBridge : public ui::ListModelObserver { |
if (!model_) |
return; |
- model_->apps()->AddObserver(bridge_.get()); |
- [self listItemsAdded:0 |
- count:model_->apps()->item_count()]; |
+ model_->AddObserver(bridge_.get()); |
+ for (size_t p = 0; p < model_->GetNumAppPages(); ++p) { |
+ size_t start_index = p * kItemsPerPage; |
+ [self listItemsAdded:start_index |
+ count:model_->GetAppItemsForPage(p).item_count()]; |
+ } |
} |
- (void)setDelegate:(app_list::AppListViewDelegate*)newDelegate { |
@@ -522,9 +529,13 @@ class AppsGridDelegateBridge : public ui::ListModelObserver { |
if (itemIndex == modelIndex) |
return; |
- model_->apps()->RemoveObserver(bridge_.get()); |
- model_->apps()->Move(itemIndex, modelIndex); |
- model_->apps()->AddObserver(bridge_.get()); |
+ size_t itemPageIndex = itemIndex / kItemsPerPage; |
+ itemIndex -= itemPageIndex * kItemsPerPage; |
+ size_t modelPageIndex = modelIndex / kItemsPerPage; |
+ modelIndex -= modelPageIndex * kItemsPerPage; |
+ model_->RemoveObserver(bridge_.get()); |
+ model_->MoveItem(itemPageIndex, itemIndex, modelPageIndex, modelIndex); |
+ model_->AddObserver(bridge_.get()); |
} |
- (AppsCollectionViewDragManager*)dragManager { |
@@ -541,7 +552,9 @@ class AppsGridDelegateBridge : public ui::ListModelObserver { |
[dragManager_ cancelDrag]; |
for (size_t i = start; i < start + count; ++i) { |
- app_list::AppListItemModel* itemModel = model_->apps()->GetItemAt(i); |
+ size_t page = i / kItemsPerPage; |
+ size_t index = i - page * kItemsPerPage; |
+ app_list::AppListItemModel* itemModel = model_->GetItemAt(page, index); |
[items_ insertObject:[NSValue valueWithPointer:itemModel] |
atIndex:i]; |
} |