Index: chrome/browser/cocoa/bookmark_bar_controller.mm |
=================================================================== |
--- chrome/browser/cocoa/bookmark_bar_controller.mm (revision 23684) |
+++ chrome/browser/cocoa/bookmark_bar_controller.mm (working copy) |
@@ -14,14 +14,25 @@ |
#import "chrome/browser/cocoa/bookmark_editor_controller.h" |
#import "chrome/browser/cocoa/bookmark_name_folder_controller.h" |
#import "chrome/browser/cocoa/bookmark_menu_cocoa_controller.h" |
+#import "chrome/browser/cocoa/event_utils.h" |
#import "chrome/browser/cocoa/view_resizer.h" |
#include "chrome/browser/cocoa/nsimage_cache.h" |
#include "chrome/browser/profile.h" |
-#import "chrome/common/cocoa_utils.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/common/pref_service.h" |
#include "skia/ext/skia_utils_mac.h" |
+// Specialization of NSButton that responds to middle-clicks. By default, |
+// NSButton ignores them. |
+@interface BookmarkButton : NSButton |
+@end |
+ |
+@implementation BookmarkButton |
+- (void)otherMouseUp:(NSEvent*) event { |
+ [self performClick:self]; |
+} |
+@end |
+ |
@interface BookmarkBarController(Private) |
- (void)applyContentAreaOffset:(BOOL)apply immediately:(BOOL)immediately; |
- (void)showBookmarkBar:(BOOL)enable immediately:(BOOL)immediately; |
@@ -40,8 +51,9 @@ |
const CGFloat kDefaultBookmarkWidth = 150.0; |
const CGFloat kBookmarkVerticalPadding = 2.0; |
const CGFloat kBookmarkHorizontalPadding = 1.0; |
-}; |
+} // namespace |
+ |
@implementation BookmarkBarController |
- (id)initWithProfile:(Profile*)profile |
@@ -186,9 +198,9 @@ |
- (IBAction)openBookmark:(id)sender { |
BookmarkNode* node = [self nodeFromButton:sender]; |
- WindowOpenDisposition disposition = event_utils::DispositionFromEventFlags( |
- [[NSApp currentEvent] modifierFlags]); |
- [urlDelegate_ openBookmarkURL:node->GetURL() disposition:disposition]; |
+ [urlDelegate_ openBookmarkURL:node->GetURL() |
+ disposition:event_utils::WindowOpenDispositionFromNSEvent( |
+ [NSApp currentEvent])]; |
} |
// Given a NSMenuItem tag, return the appropriate bookmark node id. |
@@ -501,8 +513,8 @@ |
- (IBAction)openBookmarkMenuItem:(id)sender { |
int64 tag = [self nodeIdFromMenuTag:[sender tag]]; |
const BookmarkNode* node = bookmarkModel_->GetNodeByID(tag); |
- WindowOpenDisposition disposition = event_utils::DispositionFromEventFlags( |
- [[NSApp currentEvent] modifierFlags]); |
+ WindowOpenDisposition disposition = |
+ event_utils::WindowOpenDispositionFromNSEvent([NSApp currentEvent]); |
[urlDelegate_ openBookmarkURL:node->GetURL() disposition:disposition]; |
} |
@@ -523,7 +535,7 @@ |
NSCell* cell = [self cellForBookmarkNode:child]; |
NSRect frame = [self frameForBookmarkButtonFromCell:cell xOffset:&x_offset]; |
- NSButton* button = [[[NSButton alloc] initWithFrame:frame] |
+ NSButton* button = [[[BookmarkButton alloc] initWithFrame:frame] |
autorelease]; |
DCHECK(button); |
[buttons_ addObject:button]; |