Commit 2810b248 authored by xiyuan@chromium.org's avatar xiyuan@chromium.org

app_list: Improve visual feedback for invalid touch scroll.

- Reduce col padding for invalid transition to 15px and use a 50px for first
  column;
- Fix a problem that invalid transition gets reset when touch scroll is more
  than 100%;

BUG=none.
TEST=Verify icon moves less when attempting touch scroll to an invalid page.  Also invalid move is not abruptly reset in the middle while dragging the touch.

R=sky@chromium.org


Review URL: https://chromiumcodereview.appspot.com/10832255

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151174 0039d316-1c4b-4281-b951-d872f2087c98
parent a56e7000
...@@ -25,7 +25,11 @@ const int kPreferredTileWidth = 88; ...@@ -25,7 +25,11 @@ const int kPreferredTileWidth = 88;
const int kPreferredTileHeight = 98; const int kPreferredTileHeight = 98;
// Max extra column padding space in pixels for invalid page transition. // Max extra column padding space in pixels for invalid page transition.
const int kMaxExtraColPaddingForInvalidTransition = 80; const int kMaxExtraColPaddingForInvalidTransition = 15;
// Extra column padding space in pixels of first column for invalid page
// transition.
const int kBaseExtraColPaddingForInvalidTransition = 50;
} // namespace } // namespace
...@@ -129,6 +133,8 @@ void AppsGridView::Layout() { ...@@ -129,6 +133,8 @@ void AppsGridView::Layout() {
const int transition_offset = is_valid ? const int transition_offset = is_valid ?
transition.progress * page_width * dir : transition.progress * page_width * dir :
transition.progress * kMaxExtraColPaddingForInvalidTransition * dir; transition.progress * kMaxExtraColPaddingForInvalidTransition * dir;
const int base_transition_offset = is_valid ? 0 :
transition.progress * kBaseExtraColPaddingForInvalidTransition * dir;
const int first_visible_index = current_page * tiles_per_page(); const int first_visible_index = current_page * tiles_per_page();
const int last_visible_index = (current_page + 1) * tiles_per_page() - 1; const int last_visible_index = (current_page + 1) * tiles_per_page() - 1;
...@@ -149,10 +155,11 @@ void AppsGridView::Layout() { ...@@ -149,10 +155,11 @@ void AppsGridView::Layout() {
x_offset += transition_offset; x_offset += transition_offset;
} else { } else {
const int col = i % cols_; const int col = i % cols_;
x_offset += base_transition_offset;
if (transition_offset > 0) if (transition_offset > 0)
x_offset += transition_offset * (col + 1); x_offset += transition_offset * col;
else else
x_offset += transition_offset * (cols_ - col); x_offset += transition_offset * (cols_ - col - 1);
} }
gfx::Rect adjusted_slot(tile_slot); gfx::Rect adjusted_slot(tile_slot);
......
...@@ -114,9 +114,10 @@ void PaginationModel::UpdateScroll(double delta) { ...@@ -114,9 +114,10 @@ void PaginationModel::UpdateScroll(double delta) {
if (progress < 0) { if (progress < 0) {
clear_transition(); clear_transition();
} else if (progress > 1) { } else if (progress > 1) {
if (is_valid_page(transition_.target_page)) if (is_valid_page(transition_.target_page)) {
SelectPage(transition_.target_page, false); SelectPage(transition_.target_page, false);
clear_transition(); clear_transition();
}
} else { } else {
transition_.progress = progress; transition_.progress = progress;
NotifyTransitionChanged(); NotifyTransitionChanged();
......
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