Commit 6e13231e authored by Andrew Xu's avatar Andrew Xu Committed by Commit Bot

Refactor on OverflowBubbleView's page scrolling

Bug: 918024
Change-Id: I81fa612bb3313da87787cc5cd10463da2b352594
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1782989
Commit-Queue: Andrew Xu <andrewxu@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#692960}
parent 25db18cb
...@@ -434,6 +434,23 @@ void OverflowBubbleView::UpdateLayoutStrategy() { ...@@ -434,6 +434,23 @@ void OverflowBubbleView::UpdateLayoutStrategy() {
} }
} }
void OverflowBubbleView::ScrollToNewPage(bool forward) {
// Implement the arrow button handler in the same way with scrolling the
// bubble view. The key is to calculate the suitable scroll distance.
int offset = (GetShelf()->IsHorizontalAlignment() ? bounds().width()
: bounds().height()) -
2 * GetUnit();
DCHECK_GT(offset, 0);
if (!forward)
offset = -offset;
if (GetShelf()->IsHorizontalAlignment())
ScrollByXOffset(offset, true);
else
ScrollByYOffset(offset, true);
}
gfx::Size OverflowBubbleView::CalculatePreferredSize() const { gfx::Size OverflowBubbleView::CalculatePreferredSize() const {
gfx::Rect monitor_rect = gfx::Rect monitor_rect =
display::Screen::GetScreen() display::Screen::GetScreen()
...@@ -576,22 +593,7 @@ void OverflowBubbleView::ButtonPressed(views::Button* sender, ...@@ -576,22 +593,7 @@ void OverflowBubbleView::ButtonPressed(views::Button* sender,
views::View* sender_view = sender; views::View* sender_view = sender;
DCHECK((sender_view == left_arrow_) || (sender_view == right_arrow_)); DCHECK((sender_view == left_arrow_) || (sender_view == right_arrow_));
// Implement the arrow button handler in the same way with scrolling the ScrollToNewPage(sender_view == right_arrow_);
// bubble view. The key is to calculate the suitable scroll distance.
int offset = (GetShelf()->IsHorizontalAlignment() ? bounds().width()
: bounds().height()) -
2 * GetUnit();
DCHECK_GT(offset, 0);
// If |forward| is true, scroll the overflow bubble view rightward.
bool forward = sender_view == right_arrow_;
if (!forward)
offset = -offset;
if (GetShelf()->IsHorizontalAlignment())
ScrollByXOffset(offset, true);
else
ScrollByYOffset(offset, true);
} }
void OverflowBubbleView::OnScrollEvent(ui::ScrollEvent* event) { void OverflowBubbleView::OnScrollEvent(ui::ScrollEvent* event) {
......
...@@ -105,6 +105,10 @@ class ASH_EXPORT OverflowBubbleView : public ShelfBubble, ...@@ -105,6 +105,10 @@ class ASH_EXPORT OverflowBubbleView : public ShelfBubble,
// Update the layout strategy based on the available space. // Update the layout strategy based on the available space.
void UpdateLayoutStrategy(); void UpdateLayoutStrategy();
// Scrolls to a new page of shelf icons. |forward| indicates whether the next
// page or previous page is shown.
void ScrollToNewPage(bool forward);
// views::View: // views::View:
gfx::Size CalculatePreferredSize() const override; gfx::Size CalculatePreferredSize() const override;
void Layout() override; void Layout() override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment