| 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];
|
| }
|
|
|