Chromium Code Reviews

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

Issue 6283005: [Mac] Move all the related files for the Wrench menu into a subdir of c/b/u/c... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: chrome/browser/ui/cocoa/menu_tracked_button.mm
===================================================================
--- chrome/browser/ui/cocoa/menu_tracked_button.mm (revision 71447)
+++ chrome/browser/ui/cocoa/menu_tracked_button.mm (working copy)
@@ -1,118 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "chrome/browser/ui/cocoa/menu_tracked_button.h"
-
-#include <cmath>
-
-@interface MenuTrackedButton (Private)
-- (void)doHighlight:(BOOL)highlight;
-- (void)checkMouseInRect;
-- (NSRect)insetBounds;
-- (BOOL)shouldHighlightOnHover;
-@end
-
-@implementation MenuTrackedButton
-
-@synthesize tracking = tracking_;
-
-- (void)updateTrackingAreas {
- [super updateTrackingAreas];
- [self removeTrackingRect:trackingTag_];
- trackingTag_ = [self addTrackingRect:NSInsetRect([self bounds], 1, 1)
- owner:self
- userData:NULL
- assumeInside:NO];
-}
-
-- (void)viewDidMoveToWindow {
- [self updateTrackingAreas];
- [self doHighlight:NO];
-}
-
-- (void)mouseEntered:(NSEvent*)theEvent {
- if (!tracking_) {
- didEnter_ = YES;
- }
- [self doHighlight:YES];
- [super mouseEntered:theEvent];
-}
-
-- (void)mouseExited:(NSEvent*)theEvent {
- didEnter_ = NO;
- tracking_ = NO;
- [self doHighlight:NO];
- [super mouseExited:theEvent];
-}
-
-- (void)mouseDragged:(NSEvent*)theEvent {
- tracking_ = !didEnter_;
-
- NSPoint point = [self convertPoint:[theEvent locationInWindow] fromView:nil];
- BOOL highlight = NSPointInRect(point, [self insetBounds]);
- [self doHighlight:highlight];
-
- // If tracking in non-sticky mode, poll the mouse cursor to see if it is still
- // over the button and thus needs to be highlighted. The delay is the
- // smallest that still produces the effect while minimizing jank. Smaller
- // values make the selector fire too close to immediately/now for the mouse to
- // have moved off the receiver, and larger values produce lag.
- if (tracking_ && [self shouldHighlightOnHover]) {
- [self performSelector:@selector(checkMouseInRect)
- withObject:nil
- afterDelay:0.05
- inModes:[NSArray arrayWithObject:NSEventTrackingRunLoopMode]];
- }
- [super mouseDragged:theEvent];
-}
-
-- (void)mouseUp:(NSEvent*)theEvent {
- [self doHighlight:NO];
- if (!tracking_) {
- return [super mouseUp:theEvent];
- }
- [self performClick:self];
- tracking_ = NO;
-}
-
-- (void)doHighlight:(BOOL)highlight {
- if (![self shouldHighlightOnHover]) {
- return;
- }
- [[self cell] setHighlighted:highlight];
- [self setNeedsDisplay];
-}
-
-// Checks if the user's current mouse location is over this button. If it is,
-// the user is merely hovering here. If it is not, then disable the highlight.
-// If the menu is opened in non-sticky mode, the button does not receive enter/
-// exit mouse events and thus polling is necessary.
-- (void)checkMouseInRect {
- NSPoint point = [NSEvent mouseLocation];
- point = [[self window] convertScreenToBase:point];
- point = [self convertPoint:point fromView:nil];
- if (!NSPointInRect(point, [self insetBounds])) {
- [self doHighlight:NO];
- }
-}
-
-// Returns the bounds of the receiver slightly inset to avoid highlighting both
-// buttons in a pair that overlap.
-- (NSRect)insetBounds {
- return NSInsetRect([self bounds], 2, 1);
-}
-
-- (BOOL)shouldHighlightOnHover {
- // Apple does not define NSAppKitVersionNumber10_5 when using the 10.5 SDK.
- // The Internets have come up with this solution.
- #ifndef NSAppKitVersionNumber10_5
- #define NSAppKitVersionNumber10_5 949
- #endif
-
- // There's a cell drawing bug in 10.5 that was fixed on 10.6. Hover states
- // look terrible due to this, so disable highlighting on 10.5.
- return std::floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_5;
-}
-
-@end

Powered by Google App Engine