| Index: chrome/browser/cocoa/bookmark_bar_folder_controller.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/bookmark_bar_folder_controller.mm (revision 45152)
|
| +++ chrome/browser/cocoa/bookmark_bar_folder_controller.mm (working copy)
|
| @@ -29,6 +29,11 @@
|
| 2 * (bookmarks::kBookmarkButtonHeight +
|
| bookmarks::kBookmarkVerticalPadding);
|
|
|
| +// Amount to scroll for each scroll wheel delta.
|
| +const CGFloat kBookmarkBarFolderScrollWheelAmount =
|
| + 1 * (bookmarks::kBookmarkButtonHeight +
|
| + bookmarks::kBookmarkVerticalPadding);
|
| +
|
| // When constraining a scrolling bookmark bar folder window to the
|
| // screen, shrink the "constrain" by this much vertically. Currently
|
| // this is 0.0 to avoid a problem with tracking areas leaving the
|
| @@ -85,7 +90,7 @@
|
| [super showWindow:sender];
|
| }
|
|
|
| -- (NSCell*)cellForBookmarkNode:(const BookmarkNode*)child {
|
| +- (BookmarkButtonCell*)cellForBookmarkNode:(const BookmarkNode*)child {
|
| NSImage* image = child ? [barController_ favIconForNode:child] : nil;
|
| NSMenu* menu = child ? child->is_folder() ? folderMenu_ : buttonMenu_ : nil;
|
| BookmarkBarFolderButtonCell* cell =
|
| @@ -114,9 +119,18 @@
|
| // http://crbug.com/35966
|
| - (BookmarkButton*)makeButtonForNode:(const BookmarkNode*)node
|
| frame:(NSRect)frame {
|
| - NSCell* cell = [self cellForBookmarkNode:node];
|
| + BookmarkButtonCell* cell = [self cellForBookmarkNode:node];
|
| DCHECK(cell);
|
|
|
| + // We must decide if we draw the folder arrow before we ask the cell
|
| + // how big it needs to be.
|
| + if (node && node->is_folder()) {
|
| + // Warning when combining code with bookmark_bar_controller.mm:
|
| + // this call should NOT be made for the bar buttons; only for the
|
| + // subfolder buttons.
|
| + [cell setDrawFolderArrow:YES];
|
| + }
|
| +
|
| // The "+2" is needed because, sometimes, Cocoa is off by a tad when
|
| // returning the value it thinks it needs.
|
| CGFloat desired = [cell cellSize].width + 2;
|
| @@ -147,6 +161,7 @@
|
| }
|
| } else {
|
| [button setEnabled:NO];
|
| + [button setBordered:NO];
|
| }
|
| return button;
|
| }
|
| @@ -374,8 +389,12 @@
|
| windowFrame.size.height += growAmount;
|
| windowFrame.size.height = std::min(NSHeight(windowFrame),
|
| screenHeightMinusMargin);
|
| - [[self window] setFrame:windowFrame display:YES];
|
| - [self addOrUpdateScrollTracking];
|
| + // Don't allow scrolling to make the window smaller, ever. This
|
| + // conditional is important when processing scrollWheel events.
|
| + if (windowFrame.size.height > [[self window] frame].size.height) {
|
| + [[self window] setFrame:windowFrame display:YES];
|
| + [self addOrUpdateScrollTracking];
|
| + }
|
| }
|
| }
|
|
|
| @@ -807,6 +826,14 @@
|
| [super close];
|
| }
|
|
|
| +- (void)scrollWheel:(NSEvent *)theEvent {
|
| + if (scrollable_) {
|
| + // We go negative since an NSScrollView has a flipped coordinate frame.
|
| + CGFloat amt = kBookmarkBarFolderScrollWheelAmount * -[theEvent deltaY];
|
| + [self performOneScroll:amt];
|
| + }
|
| +}
|
| +
|
| #pragma mark Methods Forwarded to BookmarkBarController
|
|
|
| - (IBAction)cutBookmark:(id)sender {
|
| @@ -865,4 +892,5 @@
|
| [barController_ openBookmarkInNewWindow:sender];
|
| }
|
|
|
| +
|
| @end // BookmarkBarFolderController
|
|
|