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

Unified Diff: chrome/browser/ui/cocoa/download/download_item_cell.mm

Issue 7272024: Fix regression: Download status doesn't appear anymore in the download-shelf (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fixed Created 9 years, 5 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
Index: chrome/browser/ui/cocoa/download/download_item_cell.mm
diff --git a/chrome/browser/ui/cocoa/download/download_item_cell.mm b/chrome/browser/ui/cocoa/download/download_item_cell.mm
index 3e20cd06ed0285c75baf2564188478b57417f899..ed6e0a9aea58f5aa71cac0172afc848a4e24f50a 100644
--- a/chrome/browser/ui/cocoa/download/download_item_cell.mm
+++ b/chrome/browser/ui/cocoa/download/download_item_cell.mm
@@ -88,6 +88,7 @@ const int kInterruptedAnimationDuration = 2.5;
@interface DownloadItemCell(Private)
- (void)updateTrackingAreas:(id)sender;
+- (void)setupToggleStatusVisibilityAnimation;
- (void)showSecondaryTitle;
- (void)hideSecondaryTitle;
- (void)animation:(NSAnimation*)animation
@@ -109,7 +110,7 @@ const int kInterruptedAnimationDuration = 2.5;
- (void)setInitialState {
isStatusTextVisible_ = NO;
titleY_ = kPrimaryTextPosTop;
- statusAlpha_ = 1.0;
+ statusAlpha_ = 0.0;
[self setFont:[NSFont systemFontOfSize:
[NSFont systemFontSizeForControlSize:NSSmallControlSize]]];
@@ -144,10 +145,8 @@ const int kInterruptedAnimationDuration = 2.5;
[[NSNotificationCenter defaultCenter] removeObserver:self];
if ([completionAnimation_ isAnimating])
[completionAnimation_ stopAnimation];
- if ([showStatusAnimation_ isAnimating])
- [showStatusAnimation_ stopAnimation];
- if ([hideStatusAnimation_ isAnimating])
- [hideStatusAnimation_ stopAnimation];
+ if ([toggleStatusVisibilityAnimation_ isAnimating])
+ [toggleStatusVisibilityAnimation_ stopAnimation];
if (trackingAreaButton_) {
[[self controlView] removeTrackingArea:trackingAreaButton_];
trackingAreaButton_.reset();
@@ -169,13 +168,11 @@ const int kInterruptedAnimationDuration = 2.5;
if (statusText.empty()) {
// Remove the status text label.
[self hideSecondaryTitle];
- isStatusTextVisible_ = NO;
} else {
// Set status text.
NSString* statusString = base::SysUTF16ToNSString(statusText);
[self setSecondaryTitle:statusString];
[self showSecondaryTitle];
- isStatusTextVisible_ = YES;
}
switch (downloadModel->download()->state()) {
@@ -598,48 +595,50 @@ const int kInterruptedAnimationDuration = 2.5;
kImageHeight);
}
-- (void)showSecondaryTitle {
- if (!isStatusTextVisible_) {
- // No core animation -- text in CA layers is not subpixel antialiased :-/
- showStatusAnimation_.reset([[DownloadItemCellAnimation alloc]
+- (void)setupToggleStatusVisibilityAnimation {
+ if (toggleStatusVisibilityAnimation_ &&
+ [toggleStatusVisibilityAnimation_ isAnimating]) {
+ // If the animation is running, cancel the animation and show/hide the
+ // status text immediately.
+ [toggleStatusVisibilityAnimation_ stopAnimation];
+ [self animation:toggleStatusVisibilityAnimation_ progressed:1.0];
+ toggleStatusVisibilityAnimation_.reset();
+ } else {
+ // Don't use core animation -- text in CA layers is not subpixel antialiased
+ toggleStatusVisibilityAnimation_.reset([[DownloadItemCellAnimation alloc]
initWithDownloadItemCell:self
duration:kShowStatusDuration
animationCurve:NSAnimationEaseIn]);
- [showStatusAnimation_.get() setDelegate:self];
- [showStatusAnimation_.get() startAnimation];
- } else {
- // If the status line continues to be visible, don't show an animation
- [self animation:nil progressed:0.0];
+ [toggleStatusVisibilityAnimation_.get() setDelegate:self];
+ [toggleStatusVisibilityAnimation_.get() startAnimation];
}
}
+- (void)showSecondaryTitle {
+ if (isStatusTextVisible_)
+ return;
+ isStatusTextVisible_ = YES;
+ [self setupToggleStatusVisibilityAnimation];
+}
+
- (void)hideSecondaryTitle {
- if (isStatusTextVisible_) {
- // No core animation -- text in CA layers is not subpixel antialiased :-/
- hideStatusAnimation_.reset([[DownloadItemCellAnimation alloc]
- initWithDownloadItemCell:self
- duration:kHideStatusDuration
- animationCurve:NSAnimationEaseIn]);
- [hideStatusAnimation_.get() setDelegate:self];
- [hideStatusAnimation_.get() startAnimation];
- } else {
- // If the download is done so quickly that the status line is never visible,
- // don't show an animation
- [self animation:nil progressed:1.0];
- }
+ if (!isStatusTextVisible_)
+ return;
+ isStatusTextVisible_ = NO;
+ [self setupToggleStatusVisibilityAnimation];
}
- (void)animation:(NSAnimation*)animation
- progressed:(NSAnimationProgress)progress {
- if (animation == showStatusAnimation_) {
- titleY_ = (1 - progress)*kPrimaryTextOnlyPosTop +
- kPrimaryTextPosTop;
- statusAlpha_ = progress;
- [[self controlView] setNeedsDisplay:YES];
- } else if (animation == hideStatusAnimation_ || animation == nil) {
- titleY_ = progress*kPrimaryTextOnlyPosTop +
- (1 - progress)*kPrimaryTextPosTop;
- statusAlpha_ = 1 - progress;
+ progressed:(NSAnimationProgress)progress {
+ if (animation == toggleStatusVisibilityAnimation_) {
+ if (isStatusTextVisible_) {
+ titleY_ = (1 - progress)*kPrimaryTextOnlyPosTop + kPrimaryTextPosTop;
+ statusAlpha_ = progress;
+ } else {
+ titleY_ = progress*kPrimaryTextOnlyPosTop +
+ (1 - progress)*kPrimaryTextPosTop;
+ statusAlpha_ = 1 - progress;
+ }
[[self controlView] setNeedsDisplay:YES];
} else if (animation == completionAnimation_) {
[[self controlView] setNeedsDisplay:YES];
@@ -647,14 +646,24 @@ const int kInterruptedAnimationDuration = 2.5;
}
- (void)animationDidEnd:(NSAnimation *)animation {
- if (animation == showStatusAnimation_)
- showStatusAnimation_.reset();
- else if (animation == hideStatusAnimation_)
- hideStatusAnimation_.reset();
+ if (animation == toggleStatusVisibilityAnimation_)
+ toggleStatusVisibilityAnimation_.reset();
else if (animation == completionAnimation_)
completionAnimation_.reset();
}
+- (BOOL)isStatusTextVisible {
+ return isStatusTextVisible_;
+}
+
+- (CGFloat)statusTextAlpha {
+ return statusAlpha_;
+}
+
+- (void)skipVisibilityAnimation {
+ [toggleStatusVisibilityAnimation_ setCurrentProgress:1.0];
+}
+
@end
@implementation DownloadItemCellAnimation
« no previous file with comments | « chrome/browser/ui/cocoa/download/download_item_cell.h ('k') | chrome/browser/ui/cocoa/download/download_item_cell_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698