Chromium Code Reviews| Index: ui/app_list/views/apps_grid_view.cc |
| diff --git a/ui/app_list/views/apps_grid_view.cc b/ui/app_list/views/apps_grid_view.cc |
| index f5c1adc0998b94f19d04ff2be3627a77b5ea0b59..0525b5bf99e3874f450223a34a10d46266e55d85 100644 |
| --- a/ui/app_list/views/apps_grid_view.cc |
| +++ b/ui/app_list/views/apps_grid_view.cc |
| @@ -316,6 +316,7 @@ AppsGridView::AppsGridView(AppsGridViewDelegate* delegate, |
| : model_(NULL), |
| item_list_(NULL), |
| delegate_(delegate), |
| + folder_delegate_(NULL), |
| pagination_model_(pagination_model), |
| page_switcher_view_(new PageSwitcher(pagination_model)), |
| start_page_view_(NULL), |
| @@ -331,7 +332,6 @@ AppsGridView::AppsGridView(AppsGridViewDelegate* delegate, |
| page_flip_target_(-1), |
| page_flip_delay_in_ms_(kPageFlipDelayInMs), |
| bounds_animator_(this), |
| - is_root_level_(true), |
| activated_item_view_(NULL), |
| dragging_for_reparent_item_(false) { |
| SetPaintToLayer(true); |
| @@ -499,7 +499,7 @@ bool AppsGridView::UpdateDragFromItem(Pointer pointer, |
| const ui::LocatedEvent& event) { |
| DCHECK(drag_view_); |
| - if (!is_root_level_) |
| + if (folder_delegate_) |
| UpdateDragStateInsideFolder(pointer, event); |
| gfx::Point drag_point_in_grid_view; |
| @@ -596,14 +596,12 @@ void AppsGridView::EndDrag(bool cancel) { |
| forward_events_to_drag_and_drop_host_ = false; |
| drag_and_drop_host_->EndDrag(cancel); |
| if (IsDraggingForReprentInHiddenGridView()) { |
|
tapted
2014/03/26 02:53:54
nit: doesn't need curlies
calamity
2014/03/27 05:14:44
Done.
|
| - static_cast<AppListFolderView*>(parent())-> |
| - DispatchEndDragEventForReparent(true); |
| + folder_delegate_->DispatchEndDragEventForReparent(true); |
| } |
| } else if (!cancel && dragging()) { |
| if (IsDraggingForReprentInHiddenGridView()) { |
| // Forward the EndDrag event to the root level grid view. |
| - static_cast<AppListFolderView*>(parent())-> |
| - DispatchEndDragEventForReparent(false); |
| + folder_delegate_->DispatchEndDragEventForReparent(false); |
| EndDragForReparentInHiddenFolderGridView(); |
| return; |
| } else { |
| @@ -658,10 +656,8 @@ void AppsGridView::EndDrag(bool cancel) { |
| // If user releases mouse inside a folder's grid view, burst the folder |
| // container ink bubble. |
| - if (!cancel && !is_root_level_ && !IsDraggingForReprentInHiddenGridView()) { |
| - static_cast<AppListFolderView*>(parent())-> |
| - UpdateFolderViewBackground(false); |
| - } |
| + if (folder_delegate_ && !IsDraggingForReprentInHiddenGridView()) |
|
tapted
2014/03/26 02:53:54
there's a typo in this function name: Reprent -> R
jennyz
2014/03/26 22:09:38
This change will crash chrome on chromeos, since t
calamity
2014/03/27 05:14:44
Done.
calamity
2014/03/27 05:14:44
Cool, thanks for fixing that.
|
| + folder_delegate_->UpdateFolderViewBackground(false); |
| if (IsDraggingForReprentInHiddenGridView()) |
| dragging_for_reparent_item_ = false; |
| @@ -1296,10 +1292,9 @@ void AppsGridView::OnReorderTimer() { |
| } |
| void AppsGridView::OnFolderItemReparentTimer() { |
| - DCHECK(!is_root_level_); |
| + DCHECK(folder_delegate_); |
| if (drag_out_of_folder_container_) { |
| - static_cast<AppListFolderView*>(parent())->ReparentItem( |
| - drag_view_, last_drag_point_); |
| + folder_delegate_->ReparentItem(drag_view_, last_drag_point_); |
| // Set the flag in the folder's grid view. |
| dragging_for_reparent_item_ = true; |
| @@ -1326,15 +1321,14 @@ void AppsGridView::UpdateDragStateInsideFolder( |
| } |
| // Regular drag and drop in a folder's grid view. |
| - AppListFolderView* folder_view = static_cast<AppListFolderView*>(parent()); |
| - folder_view->UpdateFolderViewBackground(true); |
| + folder_delegate_->UpdateFolderViewBackground(true); |
| // Calculate if the drag_view_ is dragged out of the folder's container |
| // ink bubble. |
| gfx::Rect bounds_to_folder_view = ConvertRectToParent(drag_view_->bounds()); |
| gfx::Point pt = bounds_to_folder_view.CenterPoint(); |
| bool is_item_dragged_out_of_folder = |
| - folder_view->IsPointOutsideOfFolderBoundray(pt); |
| + folder_delegate_->IsPointOutsideOfFolderBoundary(pt); |
| if (is_item_dragged_out_of_folder) { |
| if (!drag_out_of_folder_container_) { |
| folder_item_reparent_timer_.Start(FROM_HERE, |
| @@ -1349,11 +1343,11 @@ void AppsGridView::UpdateDragStateInsideFolder( |
| } |
| bool AppsGridView::IsDraggingForReparentInRootLevelGridView() const { |
| - return (is_root_level_ && dragging_for_reparent_item_); |
| + return (!folder_delegate_ && dragging_for_reparent_item_); |
| } |
| bool AppsGridView::IsDraggingForReprentInHiddenGridView() const { |
| - return (!is_root_level_ && dragging_for_reparent_item_); |
| + return (folder_delegate_ && dragging_for_reparent_item_); |
| } |
| gfx::Rect AppsGridView::GetTargetIconRectInFolder( |
| @@ -1372,8 +1366,7 @@ gfx::Rect AppsGridView::GetTargetIconRectInFolder( |
| void AppsGridView::DispatchDragEventForReparent( |
| Pointer pointer, |
| const ui::LocatedEvent& event) { |
| - static_cast<AppListFolderView*>(parent())-> |
| - DispatchDragEventForReparent(pointer, event); |
| + folder_delegate_->DispatchDragEventForReparent(pointer, event); |
| } |
| void AppsGridView::EndDragFromReparentItemInRootLevel( |
| @@ -1456,7 +1449,7 @@ void AppsGridView::EndDragForReparentInHiddenFolderGridView() { |
| } |
| void AppsGridView::OnFolderItemRemoved() { |
| - DCHECK(!is_root_level_); |
| + DCHECK(folder_delegate_); |
| item_list_ = NULL; |
| } |
| @@ -1900,8 +1893,8 @@ void AppsGridView::OnImplicitAnimationsCompleted() { |
| bool AppsGridView::EnableFolderDragDropUI() { |
| // Enable drag and drop folder UI only if it is at the app list root level |
| // and the switch is on and the target folder can still accept new items. |
| - return switches::IsFolderUIEnabled() && is_root_level_ && |
| - CanDropIntoTarget(drop_target_); |
| + return switches::IsFolderUIEnabled() && !folder_delegate_ && |
| + CanDropIntoTarget(drop_target_); |
| } |
| bool AppsGridView::CanDropIntoTarget(const Index& drop_target) { |