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

Unified Diff: ui/message_center/views/message_list_view.cc

Issue 1187003002: Retires scoped_ptr for BoundsAnimator of message_list_view. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months 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/message_center/views/message_list_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/message_center/views/message_list_view.cc
diff --git a/ui/message_center/views/message_list_view.cc b/ui/message_center/views/message_list_view.cc
index 8c1ef3fc056bc80e24470ec91e29a0620736ba13..505fe1c820518fa85a984e8eace80f63f6ca2a8c 100644
--- a/ui/message_center/views/message_list_view.cc
+++ b/ui/message_center/views/message_list_view.cc
@@ -9,7 +9,6 @@
#include "ui/message_center/views/message_center_view.h"
#include "ui/message_center/views/message_list_view.h"
#include "ui/message_center/views/message_view.h"
-#include "ui/views/animation/bounds_animator.h"
#include "ui/views/background.h"
#include "ui/views/border.h"
#include "ui/views/layout/box_layout.h"
@@ -29,6 +28,7 @@ MessageListView::MessageListView(MessageCenterView* message_center_view,
has_deferred_task_(false),
clear_all_started_(false),
top_down_(top_down),
+ animator_(this),
weak_ptr_factory_(this) {
views::BoxLayout* layout =
new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1);
@@ -47,15 +47,15 @@ MessageListView::MessageListView(MessageCenterView* message_center_view,
kMarginBetweenItems - shadow_insets.left(), /* left */
top_down ? kMarginBetweenItems - shadow_insets.bottom() : 0, /* bottom */
kMarginBetweenItems - shadow_insets.right() /* right */));
+ animator_.AddObserver(this);
}
MessageListView::~MessageListView() {
- if (animator_.get())
- animator_->RemoveObserver(this);
+ animator_.RemoveObserver(this);
}
void MessageListView::Layout() {
- if (animator_.get() && animator_->IsAnimating())
+ if (animator_.IsAnimating())
return;
gfx::Rect child_area = GetContentsBounds();
@@ -104,8 +104,7 @@ void MessageListView::RemoveNotification(MessageView* view) {
if (view->layer()) {
deleting_views_.insert(view);
} else {
- if (animator_.get())
- animator_->StopAnimatingView(view);
+ animator_.StopAnimatingView(view);
delete view;
}
DoUpdateIfPossible();
@@ -117,8 +116,7 @@ void MessageListView::UpdateNotification(MessageView* view,
int index = GetIndexOf(view);
DCHECK_LE(0, index); // GetIndexOf is negative if not a child.
- if (animator_.get())
- animator_->StopAnimatingView(view);
+ animator_.StopAnimatingView(view);
if (deleting_views_.find(view) != deleting_views_.end())
deleting_views_.erase(view);
if (deleted_when_done_.find(view) != deleted_when_done_.end())
@@ -184,14 +182,13 @@ void MessageListView::ResetRepositionSession() {
// Don't call DoUpdateIfPossible(), but let Layout() do the task without
// animation. Reset will cause the change of the bubble size itself, and
// animation from the old location will look weird.
- if (reposition_top_ >= 0 && animator_.get()) {
+ if (reposition_top_ >= 0) {
has_deferred_task_ = false;
// cancel cause OnBoundsAnimatorDone which deletes |deleted_when_done_|.
- animator_->Cancel();
+ animator_.Cancel();
STLDeleteContainerPointers(deleting_views_.begin(), deleting_views_.end());
deleting_views_.clear();
adding_views_.clear();
- animator_.reset();
}
reposition_top_ = -1;
@@ -213,7 +210,7 @@ void MessageListView::ClearAllNotifications(
void MessageListView::OnBoundsAnimatorProgressed(
views::BoundsAnimator* animator) {
- DCHECK_EQ(animator_.get(), animator);
+ DCHECK_EQ(&animator_, animator);
for (std::set<views::View*>::iterator iter = deleted_when_done_.begin();
iter != deleted_when_done_.end(); ++iter) {
const gfx::SlideAnimation* animation = animator->GetAnimationForView(*iter);
@@ -254,16 +251,11 @@ void MessageListView::DoUpdateIfPossible() {
if (child_area.IsEmpty())
return;
- if (animator_.get() && animator_->IsAnimating()) {
+ if (animator_.IsAnimating()) {
has_deferred_task_ = true;
return;
}
- if (!animator_.get()) {
- animator_.reset(new views::BoundsAnimator(this));
- animator_->AddObserver(this);
- }
-
if (!clearing_all_views_.empty()) {
AnimateClearingOneNotification();
return;
@@ -339,18 +331,18 @@ bool MessageListView::AnimateChild(views::View* child, int top, int height) {
gfx::Rect child_area = GetContentsBounds();
if (adding_views_.find(child) != adding_views_.end()) {
child->SetBounds(child_area.right(), top, child_area.width(), height);
- animator_->AnimateViewTo(
+ animator_.AnimateViewTo(
child, gfx::Rect(child_area.x(), top, child_area.width(), height));
} else if (deleting_views_.find(child) != deleting_views_.end()) {
DCHECK(child->layer());
// No moves, but animate to fade-out.
- animator_->AnimateViewTo(child, child->bounds());
+ animator_.AnimateViewTo(child, child->bounds());
deleted_when_done_.insert(child);
return false;
} else {
gfx::Rect target(child_area.x(), top, child_area.width(), height);
if (child->bounds().origin() != target.origin())
- animator_->AnimateViewTo(child, target);
+ animator_.AnimateViewTo(child, target);
else
child->SetBoundsRect(target);
}
@@ -368,7 +360,7 @@ void MessageListView::AnimateClearingOneNotification() {
// Slide from left to right.
gfx::Rect new_bounds = child->bounds();
new_bounds.set_x(new_bounds.right() + kMarginBetweenItems);
- animator_->AnimateViewTo(child, new_bounds);
+ animator_.AnimateViewTo(child, new_bounds);
// Schedule to start sliding out next notification after a short delay.
if (!clearing_all_views_.empty()) {
« no previous file with comments | « ui/message_center/views/message_list_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698