summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbeaudoin@chromium.org <beaudoin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-11 23:23:32 +0000
committerbeaudoin@chromium.org <beaudoin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-11 23:23:32 +0000
commit108aecef73d966ff16b4f989622fe66e5c5156cf (patch)
treed95f48dc165f00a42661d414d980b0c763c4e377
parentccd05971f4e65c88f8f3a7f077dd930271acbd76 (diff)
downloadchromium_src-108aecef73d966ff16b4f989622fe66e5c5156cf.zip
chromium_src-108aecef73d966ff16b4f989622fe66e5c5156cf.tar.gz
chromium_src-108aecef73d966ff16b4f989622fe66e5c5156cf.tar.bz2
On Mac, move the Apps bookmark to the left of the bookmarks bar and use the new icon
BUG=227061 TEST=Launch Chrome with instant-extended on Mac, on the NTP check that the apps bookmark button is to the left of the bookmark bar. Review URL: https://chromiumcodereview.appspot.com/13861036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193797 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm108
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm12
2 files changed, 77 insertions, 43 deletions
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
index 17b4ab3..ebe9f30 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
@@ -490,8 +490,9 @@ void RecordAppLaunch(Profile* profile, GURL url) {
- (void)updateAppsPageShortcutButtonVisibility {
if (!appsPageShortcutButton_.get())
- return ;
+ return;
[self setAppsPageShortcutButtonVisibility];
+ [self resetAllButtonPositionsWithAnimation:NO];
[self reconfigureBookmarkBar];
}
@@ -737,16 +738,6 @@ void RecordAppLaunch(Profile* profile, GURL url) {
int ignored = 0;
NSRect frame = [self frameForBookmarkButtonFromCell:
- [appsPageShortcutButton_ cell] xOffset:&ignored];
- if (![appsPageShortcutButton_ isHidden]) {
- right -= NSWidth(frame);
- frame.origin.x = right;
- } else {
- frame.origin.x = maxX - NSWidth(frame);
- }
- [appsPageShortcutButton_ setFrame:frame];
-
- frame = [self frameForBookmarkButtonFromCell:
[otherBookmarksButton_ cell] xOffset:&ignored];
if (![otherBookmarksButton_ isHidden]) {
right -= NSWidth(frame);
@@ -1057,6 +1048,15 @@ void RecordAppLaunch(Profile* profile, GURL url) {
CGFloat maxViewX = NSMaxX([[self view] bounds]);
int xOffset =
bookmarks::kBookmarkLeftMargin - bookmarks::kBookmarkHorizontalPadding;
+
+ // Draw the apps bookmark if needed.
+ if (![appsPageShortcutButton_ isHidden]) {
+ NSRect frame =
+ [self frameForBookmarkButtonFromCell:[appsPageShortcutButton_ cell]
+ xOffset:&xOffset];
+ [appsPageShortcutButton_ setFrame:frame];
+ }
+
for (int i = 0; i < node->child_count(); i++) {
const BookmarkNode* child = node->GetChild(i);
BookmarkButton* button = [self buttonForNode:child xOffset:&xOffset];
@@ -1170,8 +1170,6 @@ void RecordAppLaunch(Profile* profile, GURL url) {
BookmarkButton* button = [[BookmarkButton alloc] init];
[[button draggableButton] setDraggable:NO];
[[button draggableButton] setActsOnMouseDown:YES];
- // Peg at right; keep same height as bar.
- [button setAutoresizingMask:(NSViewMinXMargin)];
[button setCell:cell];
[button setDelegate:self];
[button setTarget:self];
@@ -1192,6 +1190,8 @@ void RecordAppLaunch(Profile* profile, GURL url) {
NSCell* cell = [self cellForBookmarkNode:bookmarkModel_->other_node()];
otherBookmarksButton_.reset([self customBookmarkButtonForCell:cell]);
+ // Peg at right; keep same height as bar.
+ [otherBookmarksButton_ setAutoresizingMask:(NSViewMinXMargin)];
[otherBookmarksButton_ setAction:@selector(openBookmarkFolderFromButton:)];
view_id_util::SetID(otherBookmarksButton_.get(), VIEW_ID_OTHER_BOOKMARKS);
[buttonView_ addSubview:otherBookmarksButton_.get()];
@@ -1210,7 +1210,8 @@ void RecordAppLaunch(Profile* profile, GURL url) {
ResourceBundle& rb = ResourceBundle::GetSharedInstance();
NSString* text = l10n_util::GetNSString(IDS_BOOKMARK_BAR_APPS_SHORTCUT_NAME);
- NSImage* image = rb.GetNativeImageNamed(IDR_WEBSTORE_ICON_16).ToNSImage();
+ NSImage* image = rb.GetNativeImageNamed(
+ IDR_BOOKMARK_BAR_APPS_SHORTCUT).ToNSImage();
NSCell* cell = [self cellForCustomButtonWithText:text
image:image];
appsPageShortcutButton_.reset([self customBookmarkButtonForCell:cell]);
@@ -1413,6 +1414,12 @@ void RecordAppLaunch(Profile* profile, GURL url) {
CGFloat left = bookmarks::kBookmarkLeftMargin;
NSRect buttonFrame = NSZeroRect;
+ // Draw the apps bookmark if needed.
+ if (![appsPageShortcutButton_ isHidden]) {
+ left = NSMaxX([appsPageShortcutButton_ frame]) +
+ bookmarks::kBookmarkHorizontalPadding;
+ }
+
for (NSButton* button in buttons_.get()) {
// Hidden buttons get no space.
if ([button isHidden])
@@ -1435,15 +1442,10 @@ void RecordAppLaunch(Profile* profile, GURL url) {
- (CGFloat)buttonViewMaxXWithOffTheSideButtonIsVisible:(BOOL)visible {
CGFloat maxViewX = NSMaxX([buttonView_ bounds]);
- // If necessary, pull in the width to account for the Other Bookmarks or Apps
- // button.
- const BOOL otherButtonVisible = [self setOtherBookmarksButtonVisibility];
- const BOOL appsButtonVisible = [self setAppsPageShortcutButtonVisibility];
- if (otherButtonVisible || appsButtonVisible) {
- BookmarkButton* leftMostRightAlignedButton = otherButtonVisible ?
- otherBookmarksButton_.get() : appsPageShortcutButton_.get();
- maxViewX = [leftMostRightAlignedButton frame].origin.x -
- bookmarks::kBookmarkRightMargin;
+ // If necessary, pull in the width to account for the Other Bookmarks button.
+ if ([self setOtherBookmarksButtonVisibility]) {
+ maxViewX = [otherBookmarksButton_ frame].origin.x -
+ bookmarks::kBookmarkRightMargin;
}
[self positionRightSideButtons];
@@ -1462,8 +1464,9 @@ void RecordAppLaunch(Profile* profile, GURL url) {
// Determine the current maximum extent of the visible buttons.
[self positionRightSideButtons];
+ BOOL offTheSideButtonVisible = (barCount > displayedButtonCount_);
CGFloat maxViewX = [self buttonViewMaxXWithOffTheSideButtonIsVisible:
- (barCount > displayedButtonCount_)];
+ offTheSideButtonVisible];
// As a result of pasting or dragging, the bar may now have more buttons
// than will fit so remove any which overflow. They will be shown in
@@ -1476,14 +1479,26 @@ void RecordAppLaunch(Profile* profile, GURL url) {
[button setDelegate:nil];
[button removeFromSuperview];
--displayedButtonCount_;
+ // Account for the fact that the chevron might now be visible.
+ if (!offTheSideButtonVisible) {
+ offTheSideButtonVisible = YES;
+ maxViewX = [self buttonViewMaxXWithOffTheSideButtonIsVisible:YES];
+ }
}
// As a result of cutting, deleting and dragging, the bar may now have room
// for more buttons.
- int xOffset = displayedButtonCount_ > 0 ?
- NSMaxX([self finalRectOfLastButton]) +
- bookmarks::kBookmarkHorizontalPadding :
- bookmarks::kBookmarkLeftMargin - bookmarks::kBookmarkHorizontalPadding;
+ int xOffset;
+ if (displayedButtonCount_ > 0) {
+ xOffset = NSMaxX([self finalRectOfLastButton]) +
+ bookmarks::kBookmarkHorizontalPadding;
+ } else if (![appsPageShortcutButton_ isHidden]) {
+ xOffset = NSMaxX([appsPageShortcutButton_ frame]) +
+ bookmarks::kBookmarkHorizontalPadding;
+ } else {
+ xOffset = bookmarks::kBookmarkLeftMargin -
+ bookmarks::kBookmarkHorizontalPadding;
+ }
for (int i = displayedButtonCount_; i < barCount; ++i) {
const BookmarkNode* child = node->GetChild(i);
BookmarkButton* button = [self buttonForNode:child xOffset:&xOffset];
@@ -1905,7 +1920,10 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
if (!hasInsertionPos_ || where != insertionPos_) {
insertionPos_ = where;
hasInsertionPos_ = YES;
- CGFloat left = bookmarks::kBookmarkLeftMargin;
+ CGFloat left = [appsPageShortcutButton_ isHidden] ?
+ bookmarks::kBookmarkLeftMargin :
+ NSMaxX([appsPageShortcutButton_ frame]) +
+ bookmarks::kBookmarkHorizontalPadding;
CGFloat paddingWidth = bookmarks::kDefaultBookmarkWidth;
BookmarkButton* draggedButton = [BookmarkButton draggedButton];
if (draggedButton) {
@@ -1937,7 +1955,18 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// or without animation according to the |animate| flag.
// This is generally useful, so is called from various places internally.
- (void)resetAllButtonPositionsWithAnimation:(BOOL)animate {
+
+ // Position the apps bookmark if needed.
CGFloat left = bookmarks::kBookmarkLeftMargin;
+ if (![appsPageShortcutButton_ isHidden]) {
+ int xOffset =
+ bookmarks::kBookmarkLeftMargin - bookmarks::kBookmarkHorizontalPadding;
+ NSRect frame =
+ [self frameForBookmarkButtonFromCell:[appsPageShortcutButton_ cell]
+ xOffset:&xOffset];
+ [appsPageShortcutButton_ setFrame:frame];
+ left = xOffset + bookmarks::kBookmarkHorizontalPadding;
+ }
animate &= innerContentAnimationsEnabled_;
for (NSButton* button in buttons_.get()) {
@@ -1983,9 +2012,9 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
savedFrameWidth_ = NSWidth([[self view] frame]);
const BookmarkNode* node = model->bookmark_bar_node();
[self clearBookmarkBar];
+ [self createAppsPageShortcutButton];
[self addNodesToButtonList:node];
[self createOtherBookmarksButton];
- [self createAppsPageShortcutButton];
[self updateTheme:[[[self view] window] themeProvider]];
[self positionRightSideButtons];
[self addButtonsToView];
@@ -2383,21 +2412,26 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// Return the x position for a drop indicator.
- (CGFloat)indicatorPosForDragToPoint:(NSPoint)point {
CGFloat x = 0;
+ CGFloat halfHorizontalPadding = 0.5 * bookmarks::kBookmarkHorizontalPadding;
int destIndex = [self indexForDragToPoint:point];
int numButtons = displayedButtonCount_;
- // If it's a drop strictly between existing buttons ...
+ CGFloat leftmostX;
+ if ([appsPageShortcutButton_ isHidden])
+ leftmostX = bookmarks::kBookmarkLeftMargin - halfHorizontalPadding;
+ else
+ leftmostX = NSMaxX([appsPageShortcutButton_ frame]) + halfHorizontalPadding;
+ // If it's a drop strictly between existing buttons ...
if (destIndex == 0) {
- x = bookmarks::kBookmarkLeftMargin -
- 0.5 * bookmarks::kBookmarkHorizontalPadding;
+ x = leftmostX;
} else if (destIndex > 0 && destIndex < numButtons) {
// ... put the indicator right between the buttons.
BookmarkButton* button =
[buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex-1)];
DCHECK(button);
NSRect buttonFrame = [button frame];
- x = NSMaxX(buttonFrame) + 0.5 * bookmarks::kBookmarkHorizontalPadding;
+ x = NSMaxX(buttonFrame) + halfHorizontalPadding;
// If it's a drop at the end (past the last button, if there are any) ...
} else if (destIndex == numButtons) {
@@ -2407,13 +2441,11 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
BookmarkButton* button =
[buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex - 1)];
DCHECK(button);
- NSRect buttonFrame = [button frame];
- x = NSMaxX(buttonFrame) + 0.5 * bookmarks::kBookmarkHorizontalPadding;
+ x = NSMaxX([button frame]) + halfHorizontalPadding;
// Otherwise, put it right at the beginning.
} else {
- x = bookmarks::kBookmarkLeftMargin -
- 0.5 * bookmarks::kBookmarkHorizontalPadding;
+ x = leftmostX;
}
} else {
NOTREACHED();
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm
index b613bd6..c96fe37 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm
@@ -1523,11 +1523,13 @@ TEST_F(BookmarkBarControllerTest, LastBookmarkResizeBehavior) {
model_test_utils::AddNodesFromModelString(model, root, model_string);
[bar_ frameDidChange];
- CGFloat viewWidths[] = { 123.0, 151.0, 152.0, 153.0, 154.0, 155.0, 200.0,
- 155.0, 154.0, 153.0, 152.0, 151.0 };
- BOOL offTheSideButtonIsHiddenResults[] = { NO, NO, NO, YES, YES, YES, YES,
- YES, YES, YES, NO, NO, NO };
- int displayedButtonCountResults[] = { 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1 };
+ CGFloat viewWidths[] = { 123.0, 124.0, 151.0, 152.0, 153.0, 154.0, 155.0,
+ 200.0, 155.0, 154.0, 153.0, 152.0, 151.0, 124.0,
+ 123.0 };
+ BOOL offTheSideButtonIsHiddenResults[] = { NO, NO, NO, NO, YES, YES, YES, YES,
+ YES, YES, YES, NO, NO, NO, NO};
+ int displayedButtonCountResults[] = { 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2,
+ 2, 1 };
for (unsigned int i = 0; i < sizeof(viewWidths) / sizeof(viewWidths[0]);
++i) {