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

Unified Diff: chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.mm

Issue 8344048: [Mac] Show the edit profile link after a dwell delay so that it doesn't flicker when scrubbing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 9 years, 2 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/browser/avatar_menu_bubble_controller.mm
diff --git a/chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.mm b/chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.mm
index 8d263677599c669f94a9605713f28e51b5e8657b..991e8f11be450594f760ac590d1ff2827c46a2c3 100644
--- a/chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.mm
+++ b/chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.mm
@@ -368,11 +368,28 @@ const CGFloat kLabelInset = 49.0;
isHighlighted_ = isHighlighted;
[[self view] setNeedsDisplay:YES];
- if (!self.activeView.isHidden) {
- if (isHighlighted_)
- [self animateFromView:self.emailField toView:self.editButton];
- else
+ // Cancel any running animation.
+ if (linkAnimation_.get()) {
+ [NSObject cancelPreviousPerformRequestsWithTarget:linkAnimation_
+ selector:@selector(startAnimation)
+ object:nil];
+ }
+
+ // Fade the edit link in or out only if this is the active view.
+ if (self.activeView.isHidden)
+ return;
+
+ if (isHighlighted_) {
+ [self animateFromView:self.emailField toView:self.editButton];
+ } else {
+ // If the edit button is visible or the animation to make it so is
+ // running, stop the animation and fade it back to the email. If not, then
+ // don't run an animation to prevent flickering.
+ if (!self.editButton.isHidden || [linkAnimation_ isAnimating]) {
+ [linkAnimation_ stopAnimation];
+ linkAnimation_.reset();
[self animateFromView:self.editButton toView:self.emailField];
+ }
}
}
@@ -390,17 +407,31 @@ const CGFloat kLabelInset = 49.0;
nil
];
- scoped_nsobject<NSViewAnimation> animation(
- [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:
- outDict, inDict, nil]]);
- [animation setDuration:kAnimationDuration];
- [self willStartAnimation:animation];
- [animation startAnimation];
+ linkAnimation_.reset([[NSViewAnimation alloc] initWithViewAnimations:
+ [NSArray arrayWithObjects:outDict, inDict, nil]]);
+ [linkAnimation_ setDelegate:self];
+ [linkAnimation_ setDuration:kAnimationDuration];
+
+ [self willStartAnimation:linkAnimation_];
+
+ [linkAnimation_ performSelector:@selector(startAnimation)
+ withObject:nil
+ afterDelay:0.2];
}
- (void)willStartAnimation:(NSAnimation*)animation {
}
+- (void)animationDidEnd:(NSAnimation*)animation {
+ if (animation == linkAnimation_.get())
+ linkAnimation_.reset();
+}
+
+- (void)animationDidStop:(NSAnimation*)animation {
+ if (animation == linkAnimation_.get())
+ linkAnimation_.reset();
+}
+
@end
// Profile Switch Button ///////////////////////////////////////////////////////

Powered by Google App Engine
This is Rietveld 408576698