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

Unified Diff: chrome/browser/cocoa/bookmark_button.mm

Issue 180036: Make download items drag sources on OS X. (Closed)
Patch Set: comments Created 10 years, 11 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/cocoa/bookmark_button.h ('k') | chrome/browser/cocoa/bookmark_button_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/bookmark_button.mm
diff --git a/chrome/browser/cocoa/bookmark_button.mm b/chrome/browser/cocoa/bookmark_button.mm
index 55c95f6dfe677f28ed045a3ce9574ad070493ae6..b0b6ecd9af15572e1864b576fead74c38d23171b 100644
--- a/chrome/browser/cocoa/bookmark_button.mm
+++ b/chrome/browser/cocoa/bookmark_button.mm
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// 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.
@@ -6,19 +6,9 @@
#import "base/scoped_nsobject.h"
#import "chrome/browser/cocoa/bookmark_button.h"
#import "chrome/browser/cocoa/bookmark_button_cell.h"
-#import "third_party/GTM/AppKit/GTMTheme.h"
-
-namespace {
-
-// Code taken from <http://codereview.chromium.org/180036/diff/3001/3004>.
-// TODO(viettrungluu): Do we want common, standard code for drag hysteresis?
-const CGFloat kWebDragStartHysteresisX = 5.0;
-const CGFloat kWebDragStartHysteresisY = 5.0;
// The opacity of the bookmark button drag image.
-const CGFloat kDragImageOpacity = 0.7;
-
-}
+static const CGFloat kDragImageOpacity = 0.7;
@interface BookmarkButton(Private)
@@ -29,25 +19,15 @@ const CGFloat kDragImageOpacity = 0.7;
@implementation BookmarkButton
-@synthesize draggable = draggable_;
@synthesize delegate = delegate_;
-- (id)initWithFrame:(NSRect)frame {
- if ((self = [super initWithFrame:frame])) {
- draggable_ = YES;
- }
- return self;
-}
-
// By default, NSButton ignores middle-clicks.
- (void)otherMouseUp:(NSEvent*)event {
[self performClick:self];
}
+// Overridden from DraggableButton.
- (void)beginDrag:(NSEvent*)event {
- // Starting drag. Never start another drag until another mouse down.
- mayDragStart_ = NO;
-
if (delegate_) {
// Ask our delegate to fill the pasteboard for us.
NSPasteboard* pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
@@ -64,7 +44,7 @@ const CGFloat kDragImageOpacity = 0.7;
[self dragImage:[self dragImage] at:NSMakePoint(0, yAt) offset:dragOffset
event:event pasteboard:pboard source:self slideBack:YES];
- // And we're done.
+ // And we're done.
[self autorelease];
} else {
// Avoid blowing up, but we really shouldn't get here.
@@ -75,8 +55,7 @@ const CGFloat kDragImageOpacity = 0.7;
- (void)draggedImage:(NSImage*)anImage
endedAt:(NSPoint)aPoint
operation:(NSDragOperation)operation {
- beingDragged_ = NO;
- [[self cell] setHighlighted:NO];
+ [super endDrag];
}
- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal {
@@ -84,61 +63,6 @@ const CGFloat kDragImageOpacity = 0.7;
: NSDragOperationCopy;
}
-- (void)mouseUp:(NSEvent*)theEvent {
- // Make sure that we can't start a drag until we see a mouse down again.
- mayDragStart_ = NO;
-
- // This conditional is never true (DnD loops in Cocoa eat the mouse
- // up) but I added it in case future versions of Cocoa do unexpected
- // things.
- if (beingDragged_) {
- NOTREACHED();
- return [super mouseUp:theEvent];
- }
-
- // There are non-drag cases where a mouseUp: may happen
- // (e.g. mouse-down, cmd-tab to another application, move mouse,
- // mouse-up). So we check.
- NSPoint viewLocal = [self convertPoint:[theEvent locationInWindow]
- fromView:[[self window] contentView]];
- if (NSPointInRect(viewLocal, [self bounds])) {
- [self performClick:self];
- } else {
- [[self cell] setHighlighted:NO];
- }
-}
-
-// Mimic "begin a click" operation visually. Do NOT follow through
-// with normal button event handling.
-- (void)mouseDown:(NSEvent*)theEvent {
- mayDragStart_ = YES;
- [[self cell] setHighlighted:YES];
- initialMouseDownLocation_ = [theEvent locationInWindow];
-}
-
-// Return YES if we have crossed a threshold of movement after
-// mouse-down when we should begin a drag. Else NO.
-- (BOOL)hasCrossedDragThreshold:(NSEvent*)theEvent {
- NSPoint currentLocation = [theEvent locationInWindow];
- if ((abs(currentLocation.x - initialMouseDownLocation_.x) >
- kWebDragStartHysteresisX) ||
- (abs(currentLocation.y - initialMouseDownLocation_.y) >
- kWebDragStartHysteresisY)) {
- return YES;
- } else {
- return NO;
- }
-}
-
-- (void)mouseDragged:(NSEvent*)theEvent {
- if (beingDragged_) {
- [super mouseDragged:theEvent];
- } else if (draggable_ && mayDragStart_ &&
- [self hasCrossedDragThreshold:theEvent]) {
- [self beginDrag:theEvent];
- }
-}
-
@end
@implementation BookmarkButton(Private)
« no previous file with comments | « chrome/browser/cocoa/bookmark_button.h ('k') | chrome/browser/cocoa/bookmark_button_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698