Index: chrome/browser/ui/views/download/download_shelf_view.cc |
=================================================================== |
--- chrome/browser/ui/views/download/download_shelf_view.cc (revision 104959) |
+++ chrome/browser/ui/views/download/download_shelf_view.cc (working copy) |
@@ -93,44 +93,13 @@ |
mouse_watcher_.set_notify_on_exit_time_ms(kNotifyOnExitTimeMS); |
set_id(VIEW_ID_DOWNLOAD_SHELF); |
parent->AddChildView(this); |
- Init(); |
+ Show(); |
} |
DownloadShelfView::~DownloadShelfView() { |
parent_->RemoveChildView(this); |
} |
-void DownloadShelfView::Init() { |
- ResourceBundle &rb = ResourceBundle::GetSharedInstance(); |
- arrow_image_ = new views::ImageView(); |
- arrow_image_->SetImage(rb.GetBitmapNamed(IDR_DOWNLOADS_FAVICON)); |
- AddChildView(arrow_image_); |
- |
- show_all_view_ = new views::Link( |
- l10n_util::GetStringUTF16(IDS_SHOW_ALL_DOWNLOADS)); |
- show_all_view_->set_listener(this); |
- AddChildView(show_all_view_); |
- |
- close_button_ = new views::ImageButton(this); |
- close_button_->SetImage(views::CustomButton::BS_NORMAL, |
- rb.GetBitmapNamed(IDR_CLOSE_BAR)); |
- close_button_->SetImage(views::CustomButton::BS_HOT, |
- rb.GetBitmapNamed(IDR_CLOSE_BAR_H)); |
- close_button_->SetImage(views::CustomButton::BS_PUSHED, |
- rb.GetBitmapNamed(IDR_CLOSE_BAR_P)); |
- close_button_->SetAccessibleName( |
- l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); |
- UpdateButtonColors(); |
- AddChildView(close_button_); |
- |
- new_item_animation_.reset(new ui::SlideAnimation(this)); |
- new_item_animation_->SetSlideDuration(kNewItemAnimationDurationMs); |
- |
- shelf_animation_.reset(new ui::SlideAnimation(this)); |
- shelf_animation_->SetSlideDuration(kShelfAnimationDurationMs); |
- Show(); |
-} |
- |
void DownloadShelfView::AddDownloadView(DownloadItemView* view) { |
mouse_watcher_.Stop(); |
@@ -180,10 +149,8 @@ |
} |
views::View* DownloadShelfView::GetDefaultFocusableChild() { |
- if (!download_views_.empty()) |
- return download_views_[0]; |
- else |
- return show_all_view_; |
+ return download_views_.empty() ? |
+ static_cast<View*>(show_all_view_) : download_views_[0]; |
} |
void DownloadShelfView::OnPaint(gfx::Canvas* canvas) { |
@@ -251,12 +218,6 @@ |
} |
void DownloadShelfView::Layout() { |
- // Now that we know we have a parent, we can safely set our theme colors. |
- show_all_view_->SetColor( |
- GetThemeProvider()->GetColor(ThemeService::COLOR_BOOKMARK_TEXT)); |
- set_background(views::Background::CreateSolidBackground( |
- GetThemeProvider()->GetColor(ThemeService::COLOR_TOOLBAR))); |
- |
// Let our base class layout our child views |
views::View::Layout(); |
@@ -327,6 +288,48 @@ |
} |
} |
+void DownloadShelfView::ViewHierarchyChanged(bool is_add, |
+ View* parent, |
+ View* child) { |
+ View::ViewHierarchyChanged(is_add, parent, child); |
+ |
+ if (is_add && (child == this)) { |
+ set_background(views::Background::CreateSolidBackground( |
+ GetThemeProvider()->GetColor(ThemeService::COLOR_TOOLBAR))); |
+ |
+ ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
+ arrow_image_ = new views::ImageView(); |
+ arrow_image_->SetImage(rb.GetBitmapNamed(IDR_DOWNLOADS_FAVICON)); |
+ AddChildView(arrow_image_); |
+ |
+ show_all_view_ = new views::Link( |
+ l10n_util::GetStringUTF16(IDS_SHOW_ALL_DOWNLOADS)); |
+ show_all_view_->set_listener(this); |
+ show_all_view_->SetBackgroundColor(background()->get_color()); |
+ show_all_view_->SetEnabledColor( |
+ GetThemeProvider()->GetColor(ThemeService::COLOR_BOOKMARK_TEXT)); |
+ AddChildView(show_all_view_); |
+ |
+ close_button_ = new views::ImageButton(this); |
+ close_button_->SetImage(views::CustomButton::BS_NORMAL, |
+ rb.GetBitmapNamed(IDR_CLOSE_BAR)); |
+ close_button_->SetImage(views::CustomButton::BS_HOT, |
+ rb.GetBitmapNamed(IDR_CLOSE_BAR_H)); |
+ close_button_->SetImage(views::CustomButton::BS_PUSHED, |
+ rb.GetBitmapNamed(IDR_CLOSE_BAR_P)); |
+ close_button_->SetAccessibleName( |
+ l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); |
+ UpdateButtonColors(); |
+ AddChildView(close_button_); |
+ |
+ new_item_animation_.reset(new ui::SlideAnimation(this)); |
+ new_item_animation_->SetSlideDuration(kNewItemAnimationDurationMs); |
+ |
+ shelf_animation_.reset(new ui::SlideAnimation(this)); |
+ shelf_animation_->SetSlideDuration(kShelfAnimationDurationMs); |
+ } |
+} |
+ |
bool DownloadShelfView::CanFitFirstDownloadItem() { |
if (download_views_.empty()) |
return true; |