OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/shelf/shelf_view.h" | 5 #include "ash/shelf/shelf_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "ash/ash_constants.h" | 9 #include "ash/ash_constants.h" |
10 #include "ash/ash_switches.h" | 10 #include "ash/ash_switches.h" |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 ShelfLayoutManager* manager) | 372 ShelfLayoutManager* manager) |
373 : model_(model), | 373 : model_(model), |
374 delegate_(delegate), | 374 delegate_(delegate), |
375 view_model_(new views::ViewModel), | 375 view_model_(new views::ViewModel), |
376 first_visible_index_(0), | 376 first_visible_index_(0), |
377 last_visible_index_(-1), | 377 last_visible_index_(-1), |
378 overflow_button_(NULL), | 378 overflow_button_(NULL), |
379 owner_overflow_bubble_(NULL), | 379 owner_overflow_bubble_(NULL), |
380 drag_pointer_(NONE), | 380 drag_pointer_(NONE), |
381 drag_view_(NULL), | 381 drag_view_(NULL), |
382 drag_offset_(0), | |
383 start_drag_index_(-1), | 382 start_drag_index_(-1), |
384 context_menu_id_(0), | 383 context_menu_id_(0), |
385 leading_inset_(kDefaultLeadingInset), | 384 leading_inset_(kDefaultLeadingInset), |
386 cancelling_drag_model_changed_(false), | 385 cancelling_drag_model_changed_(false), |
387 last_hidden_index_(0), | 386 last_hidden_index_(0), |
388 closing_event_time_(base::TimeDelta()), | 387 closing_event_time_(base::TimeDelta()), |
389 got_deleted_(NULL), | 388 got_deleted_(NULL), |
390 drag_and_drop_item_pinned_(false), | 389 drag_and_drop_item_pinned_(false), |
391 drag_and_drop_shelf_id_(0), | 390 drag_and_drop_shelf_id_(0), |
392 dragged_off_shelf_(false), | 391 dragged_off_shelf_(false), |
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
963 int first_drag_index = indices.first; | 962 int first_drag_index = indices.first; |
964 int last_drag_index = indices.second; | 963 int last_drag_index = indices.second; |
965 // If the last index isn't valid, we're overflowing. Constrain to the app list | 964 // If the last index isn't valid, we're overflowing. Constrain to the app list |
966 // (which is the last visible item). | 965 // (which is the last visible item). |
967 if (first_drag_index < model_->FirstPanelIndex() && | 966 if (first_drag_index < model_->FirstPanelIndex() && |
968 last_drag_index > last_visible_index_) | 967 last_drag_index > last_visible_index_) |
969 last_drag_index = last_visible_index_; | 968 last_drag_index = last_visible_index_; |
970 int x = 0, y = 0; | 969 int x = 0, y = 0; |
971 if (layout_manager_->IsHorizontalAlignment()) { | 970 if (layout_manager_->IsHorizontalAlignment()) { |
972 x = std::max(view_model_->ideal_bounds(indices.first).x(), | 971 x = std::max(view_model_->ideal_bounds(indices.first).x(), |
973 drag_point.x() - drag_offset_); | 972 drag_point.x() - drag_origin_.x()); |
974 x = std::min(view_model_->ideal_bounds(last_drag_index).right() - | 973 x = std::min(view_model_->ideal_bounds(last_drag_index).right() - |
975 view_model_->ideal_bounds(current_index).width(), | 974 view_model_->ideal_bounds(current_index).width(), |
976 x); | 975 x); |
977 if (drag_view_->x() == x) | 976 if (drag_view_->x() == x) |
978 return; | 977 return; |
979 drag_view_->SetX(x); | 978 drag_view_->SetX(x); |
980 } else { | 979 } else { |
981 y = std::max(view_model_->ideal_bounds(indices.first).y(), | 980 y = std::max(view_model_->ideal_bounds(indices.first).y(), |
982 drag_point.y() - drag_offset_); | 981 drag_point.y() - drag_origin_.y()); |
983 y = std::min(view_model_->ideal_bounds(last_drag_index).bottom() - | 982 y = std::min(view_model_->ideal_bounds(last_drag_index).bottom() - |
984 view_model_->ideal_bounds(current_index).height(), | 983 view_model_->ideal_bounds(current_index).height(), |
985 y); | 984 y); |
986 if (drag_view_->y() == y) | 985 if (drag_view_->y() == y) |
987 return; | 986 return; |
988 drag_view_->SetY(y); | 987 drag_view_->SetY(y); |
989 } | 988 } |
990 | 989 |
991 int target_index = | 990 int target_index = |
992 views::ViewModelUtils::DetermineMoveIndex( | 991 views::ViewModelUtils::DetermineMoveIndex( |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1567 int index = view_model_->GetIndexOfView(view); | 1566 int index = view_model_->GetIndexOfView(view); |
1568 if (index == -1) | 1567 if (index == -1) |
1569 return; | 1568 return; |
1570 | 1569 |
1571 ShelfItemDelegate* item_delegate = item_manager_->GetShelfItemDelegate( | 1570 ShelfItemDelegate* item_delegate = item_manager_->GetShelfItemDelegate( |
1572 model_->items()[index].id); | 1571 model_->items()[index].id); |
1573 if (view_model_->view_size() <= 1 || !item_delegate->IsDraggable()) | 1572 if (view_model_->view_size() <= 1 || !item_delegate->IsDraggable()) |
1574 return; // View is being deleted or not draggable, ignore request. | 1573 return; // View is being deleted or not draggable, ignore request. |
1575 | 1574 |
1576 drag_view_ = view; | 1575 drag_view_ = view; |
1577 drag_offset_ = layout_manager_->PrimaryAxisValue(event.x(), event.y()); | 1576 drag_origin_ = gfx::Point(event.x(), event.y()); |
1578 UMA_HISTOGRAM_ENUMERATION("Ash.ShelfAlignmentUsage", | 1577 UMA_HISTOGRAM_ENUMERATION("Ash.ShelfAlignmentUsage", |
1579 layout_manager_->SelectValueForShelfAlignment( | 1578 layout_manager_->SelectValueForShelfAlignment( |
1580 SHELF_ALIGNMENT_UMA_ENUM_VALUE_BOTTOM, | 1579 SHELF_ALIGNMENT_UMA_ENUM_VALUE_BOTTOM, |
1581 SHELF_ALIGNMENT_UMA_ENUM_VALUE_LEFT, | 1580 SHELF_ALIGNMENT_UMA_ENUM_VALUE_LEFT, |
1582 SHELF_ALIGNMENT_UMA_ENUM_VALUE_RIGHT, | 1581 SHELF_ALIGNMENT_UMA_ENUM_VALUE_RIGHT, |
1583 -1), | 1582 -1), |
1584 SHELF_ALIGNMENT_UMA_ENUM_VALUE_COUNT); | 1583 SHELF_ALIGNMENT_UMA_ENUM_VALUE_COUNT); |
1585 } | 1584 } |
1586 | 1585 |
1587 void ShelfView::PointerDraggedOnButton(views::View* view, | 1586 void ShelfView::PointerDraggedOnButton(views::View* view, |
1588 Pointer pointer, | 1587 Pointer pointer, |
1589 const ui::LocatedEvent& event) { | 1588 const ui::LocatedEvent& event) { |
1590 // To prepare all drag types (moving an item in the shelf and dragging off), | 1589 // To prepare all drag types (moving an item in the shelf and dragging off), |
1591 // we should check the x-axis and y-axis offset. | 1590 // we should check the x-axis and y-axis offset. |
1592 if (!dragging() && drag_view_ && | 1591 if (!dragging() && drag_view_ && |
1593 ((std::abs(event.x() - drag_offset_) >= kMinimumDragDistance) || | 1592 ((std::abs(event.x() - drag_origin_.x()) >= kMinimumDragDistance) || |
1594 (std::abs(event.y() - drag_offset_) >= kMinimumDragDistance))) { | 1593 (std::abs(event.y() - drag_origin_.y()) >= kMinimumDragDistance))) { |
1595 PrepareForDrag(pointer, event); | 1594 PrepareForDrag(pointer, event); |
1596 } | 1595 } |
1597 if (drag_pointer_ == pointer) | 1596 if (drag_pointer_ == pointer) |
1598 ContinueDrag(event); | 1597 ContinueDrag(event); |
1599 } | 1598 } |
1600 | 1599 |
1601 void ShelfView::PointerReleasedOnButton(views::View* view, | 1600 void ShelfView::PointerReleasedOnButton(views::View* view, |
1602 Pointer pointer, | 1601 Pointer pointer, |
1603 bool canceled) { | 1602 bool canceled) { |
1604 if (canceled) { | 1603 if (canceled) { |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1918 distance = bounds.x() - coordinate.x(); | 1917 distance = bounds.x() - coordinate.x(); |
1919 break; | 1918 break; |
1920 case SHELF_ALIGNMENT_TOP: | 1919 case SHELF_ALIGNMENT_TOP: |
1921 distance = coordinate.y() - bounds.bottom(); | 1920 distance = coordinate.y() - bounds.bottom(); |
1922 break; | 1921 break; |
1923 } | 1922 } |
1924 return distance > 0 ? distance : 0; | 1923 return distance > 0 ? distance : 0; |
1925 } | 1924 } |
1926 | 1925 |
1927 } // namespace ash | 1926 } // namespace ash |
OLD | NEW |