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