From 235f0e34406ee87a0daaeeff2ff420e39ec03753 Mon Sep 17 00:00:00 2001 From: "viettrungluu@chromium.org" Date: Tue, 1 Dec 2009 21:03:32 +0000 Subject: Mac: allow bookmark bar buttons to be dragged as URLs. TODO #1: dragging of folder buttons. TODO #2: perhaps holding Option while dragging on the bookmark bar should force the bookmark to be copied instead of moved. BUG=17608, 28842 TEST=Make a bunch of (non-folder) bookmarks on the bookmark bar; try dragging these bookmark bar buttons to the desktop, to the web content area, to text boxes, to other browsers -- these should all do sensible things; make sure that dragging them around on the bookmark bar still rearranges them. Review URL: http://codereview.chromium.org/434095 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33478 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/cocoa/bookmark_bar_view.mm | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'chrome/browser/cocoa/bookmark_bar_view.mm') diff --git a/chrome/browser/cocoa/bookmark_bar_view.mm b/chrome/browser/cocoa/bookmark_bar_view.mm index 2b6d69c..fd7bbe8 100644 --- a/chrome/browser/cocoa/bookmark_bar_view.mm +++ b/chrome/browser/cocoa/bookmark_bar_view.mm @@ -99,8 +99,6 @@ // NSDraggingDestination methods - (NSDragOperation)draggingEntered:(id)info { - if ([[info draggingPasteboard] containsURLData]) - return NSDragOperationCopy; if ([[info draggingPasteboard] dataForType:kBookmarkButtonDragType]) { NSData* data = [[info draggingPasteboard] dataForType:kBookmarkButtonDragType]; @@ -120,10 +118,13 @@ dropIndicatorPosition_ = x; [self setNeedsDisplay:YES]; } - } - return NSDragOperationMove; + return NSDragOperationMove; + } + // Fall through otherwise. } + if ([[info draggingPasteboard] containsURLData]) + return NSDragOperationCopy; return NSDragOperationNone; } @@ -191,14 +192,16 @@ - (BOOL)performDragOperation:(id)info { NSPasteboard* pboard = [info draggingPasteboard]; + if ([pboard dataForType:kBookmarkButtonDragType]) { + if ([self performDragOperationForBookmark:info]) + return YES; + // Fall through.... + } if ([pboard containsURLData]) { - return [self performDragOperationForURL:info]; - } else if ([pboard dataForType:kBookmarkButtonDragType]) { - return [self performDragOperationForBookmark:info]; - } else { - NOTREACHED() << "Unknown drop type onto bookmark bar."; - return NO; + if ([self performDragOperationForURL:info]) + return YES; } + return NO; } @end // @implementation BookmarkBarView -- cgit v1.1