diff options
author | skuhne@google.com <skuhne@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-04 01:05:15 +0000 |
---|---|---|
committer | skuhne@google.com <skuhne@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-04 01:05:15 +0000 |
commit | f6d04eb544ace564d7600434bc3c923818f0dd6b (patch) | |
tree | 46c4f6a2c14a24044c6bf1b2d801d3dc98630949 /ui/app_list | |
parent | b1d9add44f1a12d2c2bd83d2b008403657d2172e (diff) | |
download | chromium_src-f6d04eb544ace564d7600434bc3c923818f0dd6b.zip chromium_src-f6d04eb544ace564d7600434bc3c923818f0dd6b.tar.gz chromium_src-f6d04eb544ace564d7600434bc3c923818f0dd6b.tar.bz2 |
Made the EndDrag logic clearer by using |drag_view_| as Drag state.
BUG=246116
TEST=none
R=xiyuan@chromium.org
Review URL: https://codereview.chromium.org/16295012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203806 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/app_list')
-rw-r--r-- | ui/app_list/views/apps_grid_view.cc | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/ui/app_list/views/apps_grid_view.cc b/ui/app_list/views/apps_grid_view.cc index f825000..c957fc1 100644 --- a/ui/app_list/views/apps_grid_view.cc +++ b/ui/app_list/views/apps_grid_view.cc @@ -192,6 +192,7 @@ void AppsGridView::EnsureViewVisible(const views::View* view) { void AppsGridView::InitiateDrag(AppListItemView* view, Pointer pointer, const ui::LocatedEvent& event) { + DCHECK(view); if (drag_view_ || pulsing_blocks_model_.view_size()) return; @@ -222,8 +223,11 @@ void AppsGridView::InitiateDrag(AppListItemView* view, void AppsGridView::UpdateDrag(AppListItemView* view, Pointer pointer, const ui::LocatedEvent& event) { - if (!dragging() && drag_view_ && - ExceededDragThreshold(event.location() - drag_start_)) { + // EndDrag was called before if |drag_view_| is NULL. + if (!drag_view_) + return; + + if (!dragging() && ExceededDragThreshold(event.location() - drag_start_)) { drag_pointer_ = pointer; // Move the view to the front so that it appears on top of other views. ReorderChildView(drag_view_, -1); @@ -258,10 +262,14 @@ void AppsGridView::UpdateDrag(AppListItemView* view, } void AppsGridView::EndDrag(bool cancel) { + // EndDrag was called before if |drag_view_| is NULL. + if (!drag_view_) + return; + if (forward_events_to_drag_and_drop_host_) { forward_events_to_drag_and_drop_host_ = false; drag_and_drop_host_->EndDrag(cancel); - } else if (!cancel && dragging() && drag_view_) { + } else if (!cancel && dragging()) { CalculateDropTarget(last_drag_point_, true); if (IsValidIndex(drop_target_)) MoveItemInModel(drag_view_, drop_target_); @@ -276,10 +284,8 @@ void AppsGridView::EndDrag(bool cancel) { drag_pointer_ = NONE; drop_target_ = Index(); - if (drag_view_) { - drag_view_ = NULL; - AnimateToIdealBounds(); - } + drag_view_ = NULL; + AnimateToIdealBounds(); page_flip_timer_.Stop(); page_flip_target_ = -1; |