| 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 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "ash/ash_constants.h" | 10 #include "ash/ash_constants.h" |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 overflow_button_(nullptr), | 372 overflow_button_(nullptr), |
| 373 owner_overflow_bubble_(nullptr), | 373 owner_overflow_bubble_(nullptr), |
| 374 tooltip_(this), | 374 tooltip_(this), |
| 375 drag_pointer_(NONE), | 375 drag_pointer_(NONE), |
| 376 drag_view_(nullptr), | 376 drag_view_(nullptr), |
| 377 start_drag_index_(-1), | 377 start_drag_index_(-1), |
| 378 context_menu_id_(0), | 378 context_menu_id_(0), |
| 379 leading_inset_(kDefaultLeadingInset), | 379 leading_inset_(kDefaultLeadingInset), |
| 380 cancelling_drag_model_changed_(false), | 380 cancelling_drag_model_changed_(false), |
| 381 last_hidden_index_(0), | 381 last_hidden_index_(0), |
| 382 closing_event_time_(base::TimeDelta()), | 382 closing_event_time_(base::TimeTicks()), |
| 383 got_deleted_(nullptr), | 383 got_deleted_(nullptr), |
| 384 drag_and_drop_item_pinned_(false), | 384 drag_and_drop_item_pinned_(false), |
| 385 drag_and_drop_shelf_id_(0), | 385 drag_and_drop_shelf_id_(0), |
| 386 drag_replaced_view_(nullptr), | 386 drag_replaced_view_(nullptr), |
| 387 dragged_off_shelf_(false), | 387 dragged_off_shelf_(false), |
| 388 snap_back_from_rip_off_view_(nullptr), | 388 snap_back_from_rip_off_view_(nullptr), |
| 389 item_manager_(Shell::GetInstance()->shelf_item_delegate_manager()), | 389 item_manager_(Shell::GetInstance()->shelf_item_delegate_manager()), |
| 390 overflow_mode_(false), | 390 overflow_mode_(false), |
| 391 main_shelf_(nullptr), | 391 main_shelf_(nullptr), |
| 392 dragged_off_from_overflow_to_shelf_(false), | 392 dragged_off_from_overflow_to_shelf_(false), |
| (...skipping 1388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1781 | 1781 |
| 1782 context_menu_id_ = item ? item->id : 0; | 1782 context_menu_id_ = item ? item->id : 0; |
| 1783 ShowMenu(context_menu_model.get(), source, point, true, source_type); | 1783 ShowMenu(context_menu_model.get(), source, point, true, source_type); |
| 1784 } | 1784 } |
| 1785 | 1785 |
| 1786 void ShelfView::ShowMenu(ui::MenuModel* menu_model, | 1786 void ShelfView::ShowMenu(ui::MenuModel* menu_model, |
| 1787 views::View* source, | 1787 views::View* source, |
| 1788 const gfx::Point& click_point, | 1788 const gfx::Point& click_point, |
| 1789 bool context_menu, | 1789 bool context_menu, |
| 1790 ui::MenuSourceType source_type) { | 1790 ui::MenuSourceType source_type) { |
| 1791 closing_event_time_ = base::TimeDelta(); | 1791 closing_event_time_ = base::TimeTicks(); |
| 1792 launcher_menu_runner_.reset(new views::MenuRunner( | 1792 launcher_menu_runner_.reset(new views::MenuRunner( |
| 1793 menu_model, context_menu ? views::MenuRunner::CONTEXT_MENU : 0)); | 1793 menu_model, context_menu ? views::MenuRunner::CONTEXT_MENU : 0)); |
| 1794 | 1794 |
| 1795 aura::Window* window = source->GetWidget()->GetNativeWindow(); | 1795 aura::Window* window = source->GetWidget()->GetNativeWindow(); |
| 1796 ScopedTargetRootWindow scoped_target(window->GetRootWindow()); | 1796 ScopedTargetRootWindow scoped_target(window->GetRootWindow()); |
| 1797 | 1797 |
| 1798 views::MenuAnchorPosition menu_alignment = views::MENU_ANCHOR_TOPLEFT; | 1798 views::MenuAnchorPosition menu_alignment = views::MENU_ANCHOR_TOPLEFT; |
| 1799 gfx::Rect anchor = gfx::Rect(click_point, gfx::Size()); | 1799 gfx::Rect anchor = gfx::Rect(click_point, gfx::Size()); |
| 1800 | 1800 |
| 1801 if (!context_menu) { | 1801 if (!context_menu) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1834 got_deleted_ = nullptr; | 1834 got_deleted_ = nullptr; |
| 1835 context_menu_id_ = 0; | 1835 context_menu_id_ = 0; |
| 1836 shelf_widget->ForceUndimming(false); | 1836 shelf_widget->ForceUndimming(false); |
| 1837 | 1837 |
| 1838 // Hide the hide overflow bubble after showing a context menu for its items. | 1838 // Hide the hide overflow bubble after showing a context menu for its items. |
| 1839 if (owner_overflow_bubble_) | 1839 if (owner_overflow_bubble_) |
| 1840 owner_overflow_bubble_->HideBubbleAndRefreshButton(); | 1840 owner_overflow_bubble_->HideBubbleAndRefreshButton(); |
| 1841 | 1841 |
| 1842 // Unpinning an item will reset |launcher_menu_runner_| before coming here. | 1842 // Unpinning an item will reset |launcher_menu_runner_| before coming here. |
| 1843 if (launcher_menu_runner_) | 1843 if (launcher_menu_runner_) |
| 1844 closing_event_time_ = launcher_menu_runner_->closing_event_time(); | 1844 closing_event_time_ = |
| 1845 base::TimeTicks() + launcher_menu_runner_->closing_event_time(); |
| 1845 Shell::GetInstance()->UpdateShelfVisibility(); | 1846 Shell::GetInstance()->UpdateShelfVisibility(); |
| 1846 } | 1847 } |
| 1847 | 1848 |
| 1848 void ShelfView::OnBoundsAnimatorProgressed(views::BoundsAnimator* animator) { | 1849 void ShelfView::OnBoundsAnimatorProgressed(views::BoundsAnimator* animator) { |
| 1849 FOR_EACH_OBSERVER(ShelfIconObserver, observers_, | 1850 FOR_EACH_OBSERVER(ShelfIconObserver, observers_, |
| 1850 OnShelfIconPositionsChanged()); | 1851 OnShelfIconPositionsChanged()); |
| 1851 PreferredSizeChanged(); | 1852 PreferredSizeChanged(); |
| 1852 } | 1853 } |
| 1853 | 1854 |
| 1854 void ShelfView::OnBoundsAnimatorDone(views::BoundsAnimator* animator) { | 1855 void ShelfView::OnBoundsAnimatorDone(views::BoundsAnimator* animator) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1866 button->ClearState(ShelfButton::STATE_HIDDEN); | 1867 button->ClearState(ShelfButton::STATE_HIDDEN); |
| 1867 break; | 1868 break; |
| 1868 } | 1869 } |
| 1869 } | 1870 } |
| 1870 snap_back_from_rip_off_view_ = nullptr; | 1871 snap_back_from_rip_off_view_ = nullptr; |
| 1871 } | 1872 } |
| 1872 } | 1873 } |
| 1873 } | 1874 } |
| 1874 | 1875 |
| 1875 bool ShelfView::IsRepostEvent(const ui::Event& event) { | 1876 bool ShelfView::IsRepostEvent(const ui::Event& event) { |
| 1876 if (closing_event_time_.is_zero()) | 1877 if (closing_event_time_.is_null()) |
| 1877 return false; | 1878 return false; |
| 1878 | 1879 |
| 1879 base::TimeDelta delta = | 1880 base::TimeTicks last_closing_event_time = closing_event_time_; |
| 1880 base::TimeDelta(event.time_stamp() - closing_event_time_); | 1881 closing_event_time_ = base::TimeTicks(); |
| 1881 closing_event_time_ = base::TimeDelta(); | |
| 1882 // If the current (press down) event is a repost event, the time stamp of | 1882 // If the current (press down) event is a repost event, the time stamp of |
| 1883 // these two events should be the same. | 1883 // these two events should be the same. |
| 1884 return (delta.InMilliseconds() == 0); | 1884 return last_closing_event_time == event.time_stamp(); |
| 1885 } | 1885 } |
| 1886 | 1886 |
| 1887 const ShelfItem* ShelfView::ShelfItemForView(const views::View* view) const { | 1887 const ShelfItem* ShelfView::ShelfItemForView(const views::View* view) const { |
| 1888 const int view_index = view_model_->GetIndexOfView(view); | 1888 const int view_index = view_model_->GetIndexOfView(view); |
| 1889 return (view_index < 0) ? nullptr : &(model_->items()[view_index]); | 1889 return (view_index < 0) ? nullptr : &(model_->items()[view_index]); |
| 1890 } | 1890 } |
| 1891 | 1891 |
| 1892 int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const { | 1892 int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const { |
| 1893 const gfx::Rect bounds = GetBoundsInScreen(); | 1893 const gfx::Rect bounds = GetBoundsInScreen(); |
| 1894 int distance = shelf_->SelectValueForShelfAlignment( | 1894 int distance = shelf_->SelectValueForShelfAlignment( |
| 1895 bounds.y() - coordinate.y(), coordinate.x() - bounds.right(), | 1895 bounds.y() - coordinate.y(), coordinate.x() - bounds.right(), |
| 1896 bounds.x() - coordinate.x()); | 1896 bounds.x() - coordinate.x()); |
| 1897 return distance > 0 ? distance : 0; | 1897 return distance > 0 ? distance : 0; |
| 1898 } | 1898 } |
| 1899 | 1899 |
| 1900 } // namespace ash | 1900 } // namespace ash |
| OLD | NEW |