| Index: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm
|
| ===================================================================
|
| --- chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm (revision 71884)
|
| +++ chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm (working copy)
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2011 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.
|
|
|
| @@ -29,11 +29,11 @@
|
| // Amount to scroll by per timer fire. We scroll rather slowly; to
|
| // accomodate we do several at a time.
|
| const CGFloat kBookmarkBarFolderScrollAmount =
|
| - 3 * bookmarks::kBookmarkButtonVerticalSpan;
|
| + 3 * bookmarks::kBookmarkFolderButtonHeight;
|
|
|
| // Amount to scroll for each scroll wheel roll.
|
| const CGFloat kBookmarkBarFolderScrollWheelAmount =
|
| - 1 * bookmarks::kBookmarkButtonVerticalSpan;
|
| + 1 * bookmarks::kBookmarkFolderButtonHeight;
|
|
|
| // Determining adjustments to the layout of the folder menu window in response
|
| // to resizing and scrolling relies on many visual factors. The following
|
| @@ -473,9 +473,9 @@
|
| [[parentButton_ window]
|
| convertBaseToScreen:[[parentButton_ superview]
|
| convertPoint:NSZeroPoint toView:nil]];
|
| - newWindowTopLeft = NSMakePoint(buttonBottomLeftInScreen.x,
|
| - bookmarkBarBottomLeftInScreen.y +
|
| - bookmarks::kBookmarkBarMenuOffset);
|
| + newWindowTopLeft = NSMakePoint(
|
| + buttonBottomLeftInScreen.x + bookmarks::kBookmarkBarButtonOffset,
|
| + bookmarkBarBottomLeftInScreen.y + bookmarks::kBookmarkBarMenuOffset);
|
| // Make sure the window is on-screen; if not, push left. It is
|
| // intentional that top level folders "push left" slightly
|
| // different than subfolders.
|
| @@ -486,11 +486,11 @@
|
| NSMinX(screenFrame));
|
| }
|
| } else {
|
| - // Parent is a folder; grow right/left.
|
| + // Parent is a folder: expose as much as we can vertically; grow right/left.
|
| newWindowTopLeft.x = [self childFolderWindowLeftForWidth:windowWidth];
|
| NSPoint topOfWindow = NSMakePoint(0,
|
| - (NSMaxY([parentButton_ frame]) +
|
| - bookmarks::kBookmarkVerticalPadding));
|
| + NSMaxY([parentButton_ frame]) -
|
| + bookmarks::kBookmarkVerticalPadding);
|
| topOfWindow = [[parentButton_ window]
|
| convertBaseToScreen:[[parentButton_ superview]
|
| convertPoint:topOfWindow toView:nil]];
|
| @@ -508,8 +508,8 @@
|
| - (int)menuHeightForButtonCount:(int)buttonCount {
|
| // This does not take into account any padding which may be required at the
|
| // top and/or bottom of the window.
|
| - return (buttonCount * bookmarks::kBookmarkButtonVerticalSpan) +
|
| - bookmarks::kBookmarkVerticalPadding;
|
| + return (buttonCount * bookmarks::kBookmarkFolderButtonHeight) +
|
| + 2 * bookmarks::kBookmarkVerticalPadding;
|
| }
|
|
|
| - (void)adjustWindowLeft:(CGFloat)windowLeft
|
| @@ -569,10 +569,10 @@
|
| metrics.canScrollDown = metrics.folderTop > maximumY;
|
|
|
| // Accommodate changes in the bottom of the menu.
|
| - [self adjustMetricsForMenuTopChanges:layoutMetrics];
|
| + [self adjustMetricsForMenuBottomChanges:layoutMetrics];
|
|
|
| // Accommodate changes in the top of the menu.
|
| - [self adjustMetricsForMenuBottomChanges:layoutMetrics];
|
| + [self adjustMetricsForMenuTopChanges:layoutMetrics];
|
|
|
| metrics.scrollerFrame.origin.y += metrics.deltaScrollerY;
|
| metrics.scrollerFrame.size.height += metrics.deltaScrollerHeight;
|
| @@ -586,7 +586,7 @@
|
| metrics.windowFrame.size.width = metrics.windowSize.width;
|
| }
|
|
|
| -- (void)adjustMetricsForMenuTopChanges:(LayoutMetrics*)layoutMetrics {
|
| +- (void)adjustMetricsForMenuBottomChanges:(LayoutMetrics*)layoutMetrics {
|
| LayoutMetrics& metrics(*layoutMetrics);
|
| if (metrics.canScrollUp) {
|
| if (!metrics.couldScrollUp) {
|
| @@ -598,7 +598,7 @@
|
| metrics.deltaScrollerY = verticalScrollArrowHeight_;
|
| metrics.deltaScrollerHeight = -metrics.deltaScrollerY;
|
| // Adjust the scroll delta if we've grown the window and it is
|
| - // now scroll-up-able, but don't adjust it factor if we've
|
| + // now scroll-up-able, but don't adjust it if we've
|
| // scrolled down and it wasn't scroll-up-able but now is.
|
| if (metrics.canScrollDown == metrics.couldScrollDown) {
|
| CGFloat deltaScroll = metrics.deltaWindowY + metrics.deltaScrollerY +
|
| @@ -613,17 +613,12 @@
|
| // Could -> Can't
|
| metrics.deltaWindowY = metrics.folderY - metrics.oldWindowY;
|
| metrics.deltaWindowHeight = -metrics.deltaWindowY;
|
| - metrics.deltaVisibleY = -bookmarks::kScrollWindowVerticalMargin;
|
| + metrics.deltaVisibleY = -metrics.visibleFrame.origin.y;
|
| metrics.deltaVisibleHeight = -metrics.deltaVisibleY;
|
| metrics.deltaScrollerY = -verticalScrollArrowHeight_;
|
| metrics.deltaScrollerHeight = -metrics.deltaScrollerY;
|
| - // Adjust the scroll delta if we are no longer scroll-up-able
|
| - // and the scroll-down-able-ness hasn't changed.
|
| - if (metrics.canScrollDown == metrics.couldScrollDown) {
|
| - CGFloat deltaScroll = metrics.deltaWindowY + metrics.deltaScrollerY +
|
| - metrics.deltaVisibleY;
|
| - metrics.scrollPoint.y += deltaScroll;
|
| - }
|
| + // We are no longer scroll-up-able so the scroll point drops to zero.
|
| + metrics.scrollPoint.y = 0.0;
|
| } else {
|
| // Couldn't -> Can't
|
| // Check for menu height change by looking at the relative tops of the
|
| @@ -635,7 +630,7 @@
|
| }
|
| }
|
|
|
| -- (void)adjustMetricsForMenuBottomChanges:(LayoutMetrics*)layoutMetrics {
|
| +- (void)adjustMetricsForMenuTopChanges:(LayoutMetrics*)layoutMetrics {
|
| LayoutMetrics& metrics(*layoutMetrics);
|
| if (metrics.canScrollDown == metrics.couldScrollDown) {
|
| if (!metrics.canScrollDown) {
|
| @@ -733,9 +728,10 @@
|
| // http://crbug.com/35966
|
| NSRect buttonsOuterFrame = NSMakeRect(
|
| 0,
|
| - (height - bookmarks::kBookmarkButtonVerticalSpan),
|
| + height - bookmarks::kBookmarkFolderButtonHeight -
|
| + bookmarks::kBookmarkVerticalPadding,
|
| bookmarks::kDefaultBookmarkWidth,
|
| - bookmarks::kBookmarkButtonHeight);
|
| + bookmarks::kBookmarkFolderButtonHeight);
|
|
|
| // TODO(jrg): combine with addNodesToButtonList: code from
|
| // bookmark_bar_controller.mm (but use y offset)
|
| @@ -755,7 +751,7 @@
|
| frame:buttonsOuterFrame];
|
| [buttons_ addObject:button];
|
| [folderView_ addSubview:button];
|
| - buttonsOuterFrame.origin.y -= bookmarks::kBookmarkButtonVerticalSpan;
|
| + buttonsOuterFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
|
| }
|
| }
|
| [self layOutWindowWithHeight:height];
|
| @@ -770,8 +766,10 @@
|
| // Make sure as much of a submenu is exposed (which otherwise would be a
|
| // problem if the parent button is close to the bottom of the screen).
|
| if ([parentController_ isKindOfClass:[self class]]) {
|
| - newWindowTopLeft.y = MAX(newWindowTopLeft.y,
|
| - height + bookmarks::kScrollWindowVerticalMargin);
|
| + CGFloat minimumY = NSMinY([[[self window] screen] visibleFrame]) +
|
| + bookmarks::kScrollWindowVerticalMargin +
|
| + height;
|
| + newWindowTopLeft.y = MAX(newWindowTopLeft.y, minimumY);
|
| }
|
| NSWindow* window = [self window];
|
| NSRect windowFrame = NSMakeRect(newWindowTopLeft.x,
|
| @@ -1449,7 +1447,7 @@
|
| // topmost button's frame (and there will always be one) offset upward in
|
| // anticipation of insertion.
|
| NSRect newButtonFrame = [[buttons_ objectAtIndex:0] frame];
|
| - newButtonFrame.origin.y += bookmarks::kBookmarkButtonVerticalSpan;
|
| + newButtonFrame.origin.y += bookmarks::kBookmarkFolderButtonHeight;
|
| // When adding a button to an empty folder we must remove the 'empty'
|
| // placeholder button. This can be detected by checking for a parent
|
| // child count of 1.
|
| @@ -1473,7 +1471,7 @@
|
| // which is where the new button will be located.
|
| newButtonFrame = [button frame];
|
| NSRect buttonFrame = [button frame];
|
| - buttonFrame.origin.y += bookmarks::kBookmarkButtonVerticalSpan;
|
| + buttonFrame.origin.y += bookmarks::kBookmarkFolderButtonHeight;
|
| [button setFrame:buttonFrame];
|
| }
|
| [[button cell] mouseExited:nil]; // De-highlight.
|
| @@ -1545,7 +1543,7 @@
|
| for (NSInteger i = fromIndex; i < toIndex; ++i) {
|
| BookmarkButton* button = [buttons_ objectAtIndex:i];
|
| NSRect frame = [button frame];
|
| - frame.origin.y += bookmarks::kBookmarkButtonVerticalSpan;
|
| + frame.origin.y += bookmarks::kBookmarkFolderButtonHeight;
|
| [button setFrameOrigin:frame.origin];
|
| }
|
| } else {
|
| @@ -1554,7 +1552,7 @@
|
| for (NSInteger i = fromIndex - 1; i >= toIndex; --i) {
|
| BookmarkButton* button = [buttons_ objectAtIndex:i];
|
| NSRect buttonFrame = [button frame];
|
| - buttonFrame.origin.y -= bookmarks::kBookmarkButtonVerticalSpan;
|
| + buttonFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
|
| [button setFrameOrigin:buttonFrame.origin];
|
| }
|
| }
|
| @@ -1596,7 +1594,7 @@
|
| for (NSInteger i = 0; i < buttonIndex; ++i) {
|
| BookmarkButton* button = [buttons_ objectAtIndex:i];
|
| NSRect buttonFrame = [button frame];
|
| - buttonFrame.origin.y -= bookmarks::kBookmarkButtonVerticalSpan;
|
| + buttonFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
|
| [button setFrame:buttonFrame];
|
| }
|
| // Search for and adjust submenus, if necessary.
|
| @@ -1614,13 +1612,8 @@
|
| // If all nodes have been removed from this folder then add in the
|
| // 'empty' placeholder button.
|
| NSRect buttonFrame =
|
| - NSMakeRect(0,
|
| - bookmarks::kBookmarkButtonHeight -
|
| - (bookmarks::kBookmarkBarHeight -
|
| - bookmarks::kBookmarkVerticalPadding),
|
| - bookmarks::kDefaultBookmarkWidth,
|
| - (bookmarks::kBookmarkBarHeight -
|
| - 2 * bookmarks::kBookmarkVerticalPadding));
|
| + NSMakeRect(0.0, 0.0, bookmarks::kDefaultBookmarkWidth,
|
| + bookmarks::kBookmarkFolderButtonHeight);
|
| BookmarkButton* button = [self makeButtonForNode:nil
|
| frame:buttonFrame];
|
| [buttons_ addObject:button];
|
|
|