Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Unified Diff: ui/app_list/pagination_model.cc

Issue 11275320: app_list: Make over scroll animation faster. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/app_list/pagination_model.h ('k') | ui/app_list/pagination_model_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/app_list/pagination_model.cc
diff --git a/ui/app_list/pagination_model.cc b/ui/app_list/pagination_model.cc
index a6ef5814884ebfb2f7ec9966d1c171fb1dd87ca4..bb56d570146a20269119898185d720a207c7759e 100644
--- a/ui/app_list/pagination_model.cc
+++ b/ui/app_list/pagination_model.cc
@@ -16,7 +16,8 @@ PaginationModel::PaginationModel()
selected_page_(-1),
transition_(-1, 0),
pending_selected_page_(-1),
- transition_duration_ms_(0) {
+ transition_duration_ms_(0),
+ overscroll_transition_duration_ms_(0) {
}
PaginationModel::~PaginationModel() {
@@ -44,11 +45,11 @@ void PaginationModel::SelectPage(int page, bool animate) {
return;
// Creates an animation if there is not one.
- StartTranstionAnimation(page);
+ StartTransitionAnimation(Transition(page, 0));
return;
} else {
const bool showing = transition_animation_->IsShowing();
- const int from_page = showing ? selected_page_ : transition_.target_page;
+ const int from_page = showing ? selected_page_ : transition_.target_page;
const int to_page = showing ? transition_.target_page : selected_page_;
if (from_page == page) {
@@ -95,8 +96,10 @@ void PaginationModel::SetTransition(const Transition& transition) {
NotifyTransitionChanged();
}
-void PaginationModel::SetTransitionDuration(int duration_ms) {
+void PaginationModel::SetTransitionDurations(int duration_ms,
+ int overscroll_duration_ms) {
transition_duration_ms_ = duration_ms;
+ overscroll_transition_duration_ms_ = overscroll_duration_ms;
}
void PaginationModel::StartScroll() {
@@ -134,11 +137,8 @@ void PaginationModel::EndScroll(bool cancel) {
if (!has_transition())
return;
- CreateTransitionAnimation();
- transition_animation_->Reset(transition_.progress);
+ StartTransitionAnimation(transition_);
- // Always call Show to ensure animation will run.
- transition_animation_->Show();
if (cancel)
transition_animation_->Hide();
}
@@ -190,19 +190,21 @@ int PaginationModel::CalculateTargetPage(int delta) const {
return std::max(start_page, std::min(end_page, target_page));
}
-void PaginationModel::StartTranstionAnimation(int target_page) {
- DCHECK(selected_page_ != target_page);
+void PaginationModel::StartTransitionAnimation(const Transition& transition) {
+ DCHECK(selected_page_ != transition.target_page);
- SetTransition(Transition(target_page, 0));
- CreateTransitionAnimation();
- transition_animation_->Show();
-}
+ SetTransition(transition);
-void PaginationModel::CreateTransitionAnimation() {
transition_animation_.reset(new ui::SlideAnimation(this));
transition_animation_->SetTweenType(ui::Tween::LINEAR);
- if (transition_duration_ms_)
- transition_animation_->SetSlideDuration(transition_duration_ms_);
+ transition_animation_->Reset(transition_.progress);
+
+ const int duration = is_valid_page(transition_.target_page) ?
+ transition_duration_ms_ : overscroll_transition_duration_ms_;
+ if (duration)
+ transition_animation_->SetSlideDuration(duration);
+
+ transition_animation_->Show();
}
void PaginationModel::ResetTransitionAnimation() {
@@ -223,10 +225,8 @@ void PaginationModel::AnimationEnded(const ui::Animation* animation) {
if (transition_animation_->GetCurrentValue() == 1) {
// Showing animation ends.
- int target_page = transition_.target_page;
-
- // If target page is not in valid range, reverse the animation.
- if (target_page < 0 || target_page >= total_pages_) {
+ if (!is_valid_page(transition_.target_page)) {
+ // If target page is not in valid range, reverse the animation.
transition_animation_->Hide();
return;
}
« no previous file with comments | « ui/app_list/pagination_model.h ('k') | ui/app_list/pagination_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698