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

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

Issue 7331042: fix for 27454 - Fade out close button state on mouse exit (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix up rsesek nits 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
« no previous file with comments | « chrome/browser/ui/cocoa/hover_button.h ('k') | chrome/browser/ui/cocoa/hover_close_button.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/cocoa/hover_button.mm
diff --git a/chrome/browser/ui/cocoa/hover_button.mm b/chrome/browser/ui/cocoa/hover_button.mm
index 9d7a41246e25905958d48bbe55f1cbac0297c86c..6442e148f406351e20711bdd790e30f23075763e 100644
--- a/chrome/browser/ui/cocoa/hover_button.mm
+++ b/chrome/browser/ui/cocoa/hover_button.mm
@@ -3,9 +3,12 @@
// found in the LICENSE file.
#import "chrome/browser/ui/cocoa/hover_button.h"
+#import "chrome/browser/ui/cocoa/tracking_area.h"
@implementation HoverButton
+@synthesize hoverState = hoverState_;
+
- (id)initWithFrame:(NSRect)frameRect {
if ((self = [super initWithFrame:frameRect])) {
[self setTrackingEnabled:YES];
@@ -17,7 +20,7 @@
- (void)awakeFromNib {
[self setTrackingEnabled:YES];
- hoverState_ = kHoverStateNone;
+ self.hoverState = kHoverStateNone;
[self updateTrackingAreas];
}
@@ -27,18 +30,15 @@
}
- (void)mouseEntered:(NSEvent*)theEvent {
- hoverState_ = kHoverStateMouseOver;
- [self setNeedsDisplay:YES];
+ self.hoverState = kHoverStateMouseOver;
}
- (void)mouseExited:(NSEvent*)theEvent {
- hoverState_ = kHoverStateNone;
- [self setNeedsDisplay:YES];
+ self.hoverState = kHoverStateNone;
}
- (void)mouseDown:(NSEvent*)theEvent {
- hoverState_ = kHoverStateMouseDown;
- [self setNeedsDisplay:YES];
+ self.hoverState = kHoverStateMouseDown;
// The hover button needs to hold onto itself here for a bit. Otherwise,
// it can be freed while |super mouseDown:| is in it's loop, and the
// |checkImageState| call will crash.
@@ -57,10 +57,10 @@
- (void)setTrackingEnabled:(BOOL)enabled {
if (enabled) {
trackingArea_.reset(
- [[NSTrackingArea alloc] initWithRect:[self bounds]
+ [[CrTrackingArea alloc] initWithRect:[self bounds]
options:NSTrackingMouseEnteredAndExited |
NSTrackingActiveAlways
- owner:self
+ proxiedOwner:self
userInfo:nil]);
[self addTrackingArea:trackingArea_.get()];
@@ -68,7 +68,12 @@
// move the mouse directly over the close button without entering another
// part of the tab strip, we don't get any mouseEntered event since the
// tracking area was disabled when we entered.
- [self checkImageState];
+ // Done with a delay of 0 because sometimes an event appears to be missed
+ // between the activation of the tracking area and the call to
+ // checkImageState resulting in the button state being incorrect.
+ [self performSelector:@selector(checkImageState)
+ withObject:nil
+ afterDelay:0];
} else {
if (trackingArea_.get()) {
[self removeTrackingArea:trackingArea_.get()];
@@ -89,8 +94,12 @@
// Update the button's state if the button has moved.
NSPoint mouseLoc = [[self window] mouseLocationOutsideOfEventStream];
mouseLoc = [self convertPoint:mouseLoc fromView:nil];
- hoverState_ = NSPointInRect(mouseLoc, [self bounds]) ?
+ self.hoverState = NSPointInRect(mouseLoc, [self bounds]) ?
kHoverStateMouseOver : kHoverStateNone;
+}
+
+- (void)setHoverState:(HoverState)state {
+ hoverState_ = state;
[self setNeedsDisplay:YES];
}
« no previous file with comments | « chrome/browser/ui/cocoa/hover_button.h ('k') | chrome/browser/ui/cocoa/hover_close_button.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698