diff options
author | mrossetti@chromium.org <mrossetti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-02 19:36:20 +0000 |
---|---|---|
committer | mrossetti@chromium.org <mrossetti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-02 19:36:20 +0000 |
commit | 0645da53f77955736a4b4c7a073fcc9605dcfc1e (patch) | |
tree | 44b6df23eeaef423e5b7bf44a8646ba36b7d3aa2 | |
parent | 511cc0d4031024b45c1eb97ae6971217f2ef5994 (diff) | |
download | chromium_src-0645da53f77955736a4b4c7a073fcc9605dcfc1e.zip chromium_src-0645da53f77955736a4b4c7a073fcc9605dcfc1e.tar.gz chromium_src-0645da53f77955736a4b4c7a073fcc9605dcfc1e.tar.bz2 |
Remove the themeing from the folder menu background, text in the folder menu items, and no longer needed calls. Changed the menu button stroke color to a lighter shade of black. Did a bit of refactoring of how bookmark buttons are created.
BUG=39428
TEST=Pop up a folder menu and insure that the background does not adopt any theme settings.
Review URL: http://codereview.chromium.org/1589005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43511 0039d316-1c4b-4281-b951-d872f2087c98
17 files changed, 191 insertions, 92 deletions
diff --git a/chrome/browser/cocoa/bookmark_bar_controller.mm b/chrome/browser/cocoa/bookmark_bar_controller.mm index 11fb1f0..c84b087 100644 --- a/chrome/browser/cocoa/bookmark_bar_controller.mm +++ b/chrome/browser/cocoa/bookmark_bar_controller.mm @@ -176,7 +176,6 @@ const NSTimeInterval kBookmarkBarAnimationDuration = 0.12; - (void)addNonBookmarkButtonsToView; - (void)addButtonsToView; - (void)centerNoItemsLabel; -- (NSImage*)getFavIconForNode:(const BookmarkNode*)node; - (void)setNodeForBarMenu; - (void)watchForExitEvent:(BOOL)watch; @@ -1140,7 +1139,7 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { action:nil keyEquivalent:@""] autorelease]; [menu addItem:item]; - [item setImage:[self getFavIconForNode:child]]; + [item setImage:[self favIconForNode:child]]; if (child->is_folder()) { NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease]; [menu setSubmenu:submenu forItem:item]; @@ -1411,25 +1410,12 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { // Return an autoreleased NSCell suitable for a bookmark button. // TODO(jrg): move much of the cell config into the BookmarkButtonCell class. - (NSCell*)cellForBookmarkNode:(const BookmarkNode*)node { - BookmarkButtonCell* cell = - [[[BookmarkButtonCell alloc] initTextCell:nil] - autorelease]; - DCHECK(cell); - [cell setBookmarkNode:node]; - - if (node) { - NSString* title = base::SysWideToNSString(node->GetTitle()); - NSImage* image = [self getFavIconForNode:node]; - [cell setBookmarkCellText:title image:image]; - if (node->is_folder()) - [cell setMenu:buttonFolderContextMenu_]; - else - [cell setMenu:buttonContextMenu_]; - } else { - [cell setEmpty:YES]; - [cell setBookmarkCellText:l10n_util::GetNSString(IDS_MENU_EMPTY_SUBMENU) - image:nil]; - } + NSImage* image = node ? [self favIconForNode:node] : nil; + NSMenu* menu = [self contextMenuForNode:node]; + BookmarkButtonCell* cell = [BookmarkButtonCell buttonCellForNode:node + contextMenu:menu + cellText:nil + cellImage:image]; // Note: a quirk of setting a cell's text color is that it won't work // until the cell is associated with a button, so we can't theme the cell yet. @@ -1437,6 +1423,11 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { return cell; } +- (NSMenu*)contextMenuForNode:(const BookmarkNode*)node { + return node && node->is_folder() ? buttonFolderContextMenu_ : + buttonContextMenu_; +} + // Return an appropriate width for the given bookmark button cell. // The "+2" is needed because, sometimes, Cocoa is off by a tad. // Example: for a bookmark named "Moma" or "SFGate", it is one pixel @@ -1691,7 +1682,7 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { const BookmarkNode* cellnode = [button bookmarkNode]; if (cellnode == node) { [[button cell] setBookmarkCellText:nil - image:[self getFavIconForNode:node]]; + image:[self favIconForNode:node]]; // Adding an image means we might need more room for the // bookmark. Test for it by growing the button (if needed) // and shifting everything else over. @@ -1718,7 +1709,10 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { return otherBookmarksButton_.get(); } -- (NSImage*)getFavIconForNode:(const BookmarkNode*)node { +- (NSImage*)favIconForNode:(const BookmarkNode*)node { + if (!node) + return defaultImage_; + if (node->is_folder()) return folderImage_; diff --git a/chrome/browser/cocoa/bookmark_bar_folder_button_cell.h b/chrome/browser/cocoa/bookmark_bar_folder_button_cell.h new file mode 100644 index 0000000..afcfd34 --- /dev/null +++ b/chrome/browser/cocoa/bookmark_bar_folder_button_cell.h @@ -0,0 +1,30 @@ +// Copyright (c) 2010 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. + +#ifndef CHROME_BROWSER_COCOA_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_ +#define CHROME_BROWSER_COCOA_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_ + +#import "chrome/browser/cocoa/bookmark_button_cell.h" + +class BookmarkNode; + +// A button cell that handles drawing/highlighting of buttons in the +// bookmark bar. This cell forwards mouseEntered/mouseExited events +// to its control view so that pseudo-menu operations +// (e.g. hover-over to open) can be implemented. +@interface BookmarkBarFolderButtonCell : BookmarkButtonCell { + @private + scoped_nsobject<NSColor> frameColor_; +} + +// Create a button cell which draws without a theme and with a frame +// color provided by the BrowserThemeProvider defaults. ++ (id)buttonCellForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage; + +@end + +#endif // CHROME_BROWSER_COCOA_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_ diff --git a/chrome/browser/cocoa/bookmark_bar_folder_button_cell.mm b/chrome/browser/cocoa/bookmark_bar_folder_button_cell.mm new file mode 100644 index 0000000..3c4b913 --- /dev/null +++ b/chrome/browser/cocoa/bookmark_bar_folder_button_cell.mm @@ -0,0 +1,22 @@ +// Copyright (c) 2010 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. + +#import "chrome/browser/cocoa/bookmark_bar_folder_button_cell.h" + +@implementation BookmarkBarFolderButtonCell + ++ (id)buttonCellForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage { + id buttonCell = + [[[BookmarkBarFolderButtonCell alloc] initForNode:node + contextMenu:contextMenu + cellText:cellText + cellImage:cellImage] + autorelease]; + return buttonCell; +} + +@end diff --git a/chrome/browser/cocoa/bookmark_bar_folder_button_cell_unittest.mm b/chrome/browser/cocoa/bookmark_bar_folder_button_cell_unittest.mm new file mode 100644 index 0000000..55c2412 --- /dev/null +++ b/chrome/browser/cocoa/bookmark_bar_folder_button_cell_unittest.mm @@ -0,0 +1,24 @@ +// Copyright (c) 2010 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. + +#include "base/scoped_nsobject.h" +#import "chrome/browser/cocoa/bookmark_bar_folder_button_cell.h" +#import "chrome/browser/cocoa/cocoa_test_helper.h" + +namespace { + +class BookmarkBarFolderButtonCellTest : public CocoaTest { +}; + +// Basic creation. +TEST_F(BookmarkBarFolderButtonCellTest, Create) { + scoped_nsobject<BookmarkBarFolderButtonCell> cell; + cell.reset([[BookmarkBarFolderButtonCell buttonCellForNode:nil + contextMenu:nil + cellText:nil + cellImage:nil] retain]); + EXPECT_TRUE(cell); +} + +} // namespace diff --git a/chrome/browser/cocoa/bookmark_bar_folder_controller.mm b/chrome/browser/cocoa/bookmark_bar_folder_controller.mm index 811cf90..b99ba51 100644 --- a/chrome/browser/cocoa/bookmark_bar_folder_controller.mm +++ b/chrome/browser/cocoa/bookmark_bar_folder_controller.mm @@ -10,7 +10,7 @@ #import "chrome/browser/cocoa/bookmark_bar_constants.h" // namespace bookmarks #import "chrome/browser/cocoa/bookmark_bar_controller.h" // namespace bookmarks #import "chrome/browser/cocoa/bookmark_bar_folder_view.h" -#import "chrome/browser/cocoa/bookmark_button_cell.h" +#import "chrome/browser/cocoa/bookmark_bar_folder_button_cell.h" #import "chrome/browser/cocoa/bookmark_folder_target.h" #import "chrome/browser/cocoa/browser_window_controller.h" #import "chrome/browser/cocoa/event_utils.h" @@ -49,14 +49,6 @@ const CGFloat kBookmarkBarFolderScrollAmount = parentController_.reset([controller retain]); buttons_.reset([[NSMutableArray alloc] init]); folderTarget_.reset([[BookmarkFolderTarget alloc] initWithController:self]); - - // Register for theme changes. - NSNotificationCenter* defaultCenter = [NSNotificationCenter defaultCenter]; - [defaultCenter addObserver:self - selector:@selector(themeDidChangeNotification:) - name:kBrowserThemeDidChangeNotification - object:nil]; - [self configureWindow]; [self addScrollTracking]; } @@ -66,7 +58,6 @@ const CGFloat kBookmarkBarFolderScrollAmount = - (void)dealloc { [self removeScrollTracking]; [self endScroll]; - [[NSNotificationCenter defaultCenter] removeObserver:self]; // Note: we don't need to // [NSObject cancelPreviousPerformRequestsWithTarget:self]; // Because all of our performSelector: calls use withDelay: which @@ -81,30 +72,23 @@ const CGFloat kBookmarkBarFolderScrollAmount = [super showWindow:sender]; } -// Update theme information for all our buttons. -- (void)updateTheme:(ThemeProvider*)themeProvider { - if (!themeProvider) - return; - NSColor* color = - themeProvider->GetNSColor(BrowserThemeProvider::COLOR_BOOKMARK_TEXT, - true); - for (BookmarkButton* button in buttons_.get()) { - BookmarkButtonCell* cell = [button cell]; - [cell setTextColor:color]; - } +- (NSCell*)cellForBookmarkNode:(const BookmarkNode*)child { + NSImage* image = child ? [self favIconForNode:child] : nil; + NSMenu* menu = [self contextMenuForNode:child]; + BookmarkBarFolderButtonCell* cell = + [BookmarkBarFolderButtonCell buttonCellForNode:child + contextMenu:menu + cellText:nil + cellImage:image]; + return cell; } -// Called after the current theme has changed. -- (void)themeDidChangeNotification:(NSNotification*)aNotification { - ThemeProvider* themeProvider = - static_cast<ThemeProvider*>([[aNotification object] pointerValue]); - [self updateTheme:themeProvider]; +- (NSImage*)favIconForNode:(const BookmarkNode*)node { + return node ? [parentController_ favIconForNode:node] : nil; } -// Redirect bookmark button cell creation to our parent to allow a -// single implementation. -- (NSCell*)cellForBookmarkNode:(const BookmarkNode*)child { - return [parentController_ cellForBookmarkNode:child]; +- (NSMenu*)contextMenuForNode:(const BookmarkNode*)node { + return node ? [parentController_ contextMenuForNode:node] : nil; } // Redirect to our logic shared with BookmarkBarController. @@ -276,7 +260,6 @@ const CGFloat kBookmarkBarFolderScrollAmount = buttonsOuterFrame.origin.y -= bookmarks::kBookmarkBarHeight; } } - [self updateTheme:[self themeProvider]]; // Now that we have all our buttons we can determine the real size // of our window. diff --git a/chrome/browser/cocoa/bookmark_bar_folder_controller_unittest.mm b/chrome/browser/cocoa/bookmark_bar_folder_controller_unittest.mm index cde2b2e..55b3d16 100644 --- a/chrome/browser/cocoa/bookmark_bar_folder_controller_unittest.mm +++ b/chrome/browser/cocoa/bookmark_bar_folder_controller_unittest.mm @@ -7,6 +7,7 @@ #include "base/basictypes.h" #include "base/scoped_nsobject.h" #import "chrome/browser/cocoa/bookmark_bar_controller.h" +#import "chrome/browser/cocoa/bookmark_bar_folder_button_cell.h" #import "chrome/browser/cocoa/bookmark_bar_folder_controller.h" #include "chrome/browser/cocoa/browser_test_helper.h" #import "chrome/browser/cocoa/cocoa_test_helper.h" @@ -124,17 +125,19 @@ TEST_F(BookmarkBarFolderControllerTest, InitCreateAndDelete) { scoped_nsobject<BookmarkBarFolderController> bbfc; bbfc.reset(SimpleBookmarkBarFolderController()); - // Make sure none of the buttons overlap, and that all are inside - // the content frame. + // Make sure none of the buttons overlap, that all are inside + // the content frame, and their cells are of the proper class. NSArray* buttons = [bbfc buttons]; EXPECT_TRUE([buttons count]); for (unsigned int i = 0; i < ([buttons count]-1); i++) { EXPECT_FALSE(NSContainsRect([[buttons objectAtIndex:i] frame], [[buttons objectAtIndex:i+1] frame])); } + Class cellClass = [BookmarkBarFolderButtonCell class]; for (BookmarkButton* button in buttons) { NSRect r = [[bbfc mainView] convertRect:[button frame] fromView:button]; EXPECT_TRUE(NSContainsRect([[bbfc mainView] frame], r)); + EXPECT_TRUE([[button cell] isKindOfClass:cellClass]); } // Confirm folder buttons have no tooltip. The important thing diff --git a/chrome/browser/cocoa/bookmark_bar_folder_view.h b/chrome/browser/cocoa/bookmark_bar_folder_view.h index a8fe85b..e4142d6 100644 --- a/chrome/browser/cocoa/bookmark_bar_folder_view.h +++ b/chrome/browser/cocoa/bookmark_bar_folder_view.h @@ -3,13 +3,12 @@ // found in the LICENSE file. #import <Cocoa/Cocoa.h> -#import "chrome/browser/cocoa/background_gradient_view.h" @protocol BookmarkButtonControllerProtocol; // Main content view for a bookmark bar folder "menu" window. This is // logically similar to a BookmarkBarView but is oriented vertically. -@interface BookmarkBarFolderView : BackgroundGradientView { +@interface BookmarkBarFolderView : NSView { @private BOOL inDrag_; // Are we in the middle of a drag? BOOL dropIndicatorShown_; diff --git a/chrome/browser/cocoa/bookmark_bar_folder_view.mm b/chrome/browser/cocoa/bookmark_bar_folder_view.mm index 9ede01b..cbbd5a2 100644 --- a/chrome/browser/cocoa/bookmark_bar_folder_view.mm +++ b/chrome/browser/cocoa/bookmark_bar_folder_view.mm @@ -4,7 +4,6 @@ #import "chrome/browser/cocoa/bookmark_bar_folder_view.h" -#import "chrome/browser/browser_theme_provider.h" #import "chrome/browser/cocoa/bookmark_bar_controller.h" @implementation BookmarkBarFolderView @@ -14,12 +13,6 @@ } - (void)awakeFromNib { - [super awakeFromNib]; - - // BackgroundGradientView's awakeFromNib does a |showsDivider_ = YES|. - // Make sure we turn it off. - [self setShowsDivider:NO]; - NSArray* types = [NSArray arrayWithObject:kBookmarkButtonDragType]; [self registerForDraggedTypes:types]; } @@ -30,8 +23,6 @@ } - (void)drawRect:(NSRect)rect { - [self drawBackground]; - // TODO(jrg): copied from bookmark_bar_view but orientation changed. // Code dup sucks but I'm not sure I can take 16 lines and make it // generic for horiz vs vertical while keeping things simple. @@ -49,14 +40,9 @@ NSMakeRect(kBarHorizPad, dropIndicatorPosition_, NSWidth([self bounds]) - 2*kBarHorizPad, kBarHeight); - // themeProvider is nil in unit tests. - ThemeProvider* themeProvider = [[self controller] themeProvider]; - if (themeProvider) { - NSColor* uglyBlackBarColor = themeProvider-> - GetNSColor(BrowserThemeProvider::COLOR_BOOKMARK_TEXT, true); - [[uglyBlackBarColor colorWithAlphaComponent:kBarOpacity] setFill]; - [[NSBezierPath bezierPathWithRect:uglyBlackBar] fill]; - } + NSColor* uglyBlackBarColor = [NSColor blackColor]; + [[uglyBlackBarColor colorWithAlphaComponent:kBarOpacity] setFill]; + [[NSBezierPath bezierPathWithRect:uglyBlackBar] fill]; } } diff --git a/chrome/browser/cocoa/bookmark_bar_folder_view_unittest.mm b/chrome/browser/cocoa/bookmark_bar_folder_view_unittest.mm index 2cf339e..6a46198 100644 --- a/chrome/browser/cocoa/bookmark_bar_folder_view_unittest.mm +++ b/chrome/browser/cocoa/bookmark_bar_folder_view_unittest.mm @@ -114,6 +114,14 @@ return nil; } +- (NSImage*)favIconForNode:(const BookmarkNode*)node { + return nil; +} + +- (NSMenu*)contextMenuForNode:(const BookmarkNode*)node { + return nil; +} + @end namespace { @@ -132,9 +140,6 @@ TEST_F(BookmarkBarFolderViewTest, Basics) { [view_ awakeFromNib]; [[test_window() contentView] addSubview:view_]; - // Confirm an assumption made in our awakeFromNib - EXPECT_FALSE([view_ showsDivider]); - // Make sure we're set up for DnD NSArray* types = [view_ registeredDraggedTypes]; EXPECT_TRUE([types containsObject:kBookmarkButtonDragType]); diff --git a/chrome/browser/cocoa/bookmark_bar_folder_window.mm b/chrome/browser/cocoa/bookmark_bar_folder_window.mm index 9d056f5..f911777 100644 --- a/chrome/browser/cocoa/bookmark_bar_folder_window.mm +++ b/chrome/browser/cocoa/bookmark_bar_folder_window.mm @@ -4,9 +4,6 @@ #import "chrome/browser/cocoa/bookmark_bar_folder_window.h" -#import "chrome/browser/cocoa/bookmark_bar_folder_controller.h" -#import "chrome/browser/cocoa/themed_window.h" - @implementation BookmarkBarFolderWindow - (id)initWithContentRect:(NSRect)contentRect @@ -19,8 +16,4 @@ defer:deferCreation]; } -- (ThemeProvider*)themeProvider { - return [[self windowController] themeProvider]; -} - @end diff --git a/chrome/browser/cocoa/bookmark_button.h b/chrome/browser/cocoa/bookmark_button.h index 10c1bc4..a5176ac 100644 --- a/chrome/browser/cocoa/bookmark_button.h +++ b/chrome/browser/cocoa/bookmark_button.h @@ -116,6 +116,12 @@ class ThemeProvider; // If there is a current folder controller, close it. - (void)addNewFolderControllerWithParentButton:(BookmarkButton*)parentButton; +// Provide a favIcon for a bookmark node. May return nil. +- (NSImage*)favIconForNode:(const BookmarkNode*)node; + +// Provide a contextual menu for a bookmark node. May return nil. +- (NSMenu*)contextMenuForNode:(const BookmarkNode*)node; + @end // @protocol BookmarkButtonControllerProtocol diff --git a/chrome/browser/cocoa/bookmark_button_cell.h b/chrome/browser/cocoa/bookmark_button_cell.h index a2f072a..6684b8e 100644 --- a/chrome/browser/cocoa/bookmark_button_cell.h +++ b/chrome/browser/cocoa/bookmark_button_cell.h @@ -25,7 +25,19 @@ class BookmarkNode; @property (readwrite, assign) const BookmarkNode* bookmarkNode; @property (readwrite, assign) int startingChildIndex; -- (id)initTextCell:(NSString*)string; // Designated initializer +// Create a button cell which draws with a theme. ++ (id)buttonCellForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage; + +// Initialize a button cell which draws with a theme. +// Designated initializer. +- (id)initForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage; + - (BOOL)empty; // returns YES if empty. - (void)setEmpty:(BOOL)empty; diff --git a/chrome/browser/cocoa/bookmark_button_cell.mm b/chrome/browser/cocoa/bookmark_button_cell.mm index 7125a5c..f769938 100644 --- a/chrome/browser/cocoa/bookmark_button_cell.mm +++ b/chrome/browser/cocoa/bookmark_button_cell.mm @@ -2,10 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#import "chrome/browser/cocoa/bookmark_button_cell.h" + +#include "app/l10n_util_mac.h" #include "base/logging.h" +#include "base/sys_string_conversions.h" #import "chrome/browser/bookmarks/bookmark_model.h" -#import "chrome/browser/cocoa/bookmark_button_cell.h" #import "chrome/browser/cocoa/bookmark_menu.h" +#include "grit/generated_resources.h" @interface BookmarkButtonCell(Private) @@ -17,13 +21,45 @@ @synthesize startingChildIndex = startingChildIndex_; -- (id)initTextCell:(NSString*)string { - if ((self = [super initTextCell:string])) { ++ (id)buttonCellForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage { + id buttonCell = + [[[BookmarkButtonCell alloc] initForNode:node + contextMenu:contextMenu + cellText:cellText + cellImage:cellImage] + autorelease]; + return buttonCell; +} + +- (id)initForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage { + if ((self = [super initTextCell:cellText])) { [self configureBookmarkButtonCell]; + + [self setBookmarkNode:node]; + + if (node) { + NSString* title = base::SysWideToNSString(node->GetTitle()); + [self setBookmarkCellText:title image:cellImage]; + [self setMenu:contextMenu]; + } else { + [self setEmpty:YES]; + [self setBookmarkCellText:l10n_util::GetNSString(IDS_MENU_EMPTY_SUBMENU) + image:nil]; + } } return self; } +- (id)initTextCell:(NSString*)string { + return [self initForNode:nil contextMenu:nil cellText:string cellImage:nil]; +} + // Used by the off-the-side menu, the only case where a // BookmarkButtonCell is loaded from a nib. - (void)awakeFromNib { diff --git a/chrome/browser/cocoa/bookmark_button_cell_unittest.mm b/chrome/browser/cocoa/bookmark_button_cell_unittest.mm index 63c043b..da378f1 100644 --- a/chrome/browser/cocoa/bookmark_button_cell_unittest.mm +++ b/chrome/browser/cocoa/bookmark_button_cell_unittest.mm @@ -56,13 +56,16 @@ TEST_F(BookmarkButtonCellTest, SizeForBounds) { TEST_F(BookmarkButtonCellTest, MouseEnterStuff) { scoped_nsobject<BookmarkButtonCell> cell( [[BookmarkButtonCell alloc] initTextCell:@"Testing"]); + // Setting the menu should have no affect since we either share or + // dynamically compose the menu given a node. [cell setMenu:[[[BookmarkMenu alloc] initWithTitle:@"foo"] autorelease]]; + EXPECT_FALSE([cell menu]); BookmarkModel* model = helper_.profile()->GetBookmarkModel(); const BookmarkNode* node = model->GetBookmarkBarNode(); + [cell setEmpty:NO]; [cell setBookmarkNode:node]; - - EXPECT_TRUE([cell.get() showsBorderOnlyWhileMouseInside]); + EXPECT_TRUE([cell showsBorderOnlyWhileMouseInside]); EXPECT_TRUE([cell menu]); [cell setEmpty:YES]; diff --git a/chrome/browser/cocoa/gradient_button_cell.mm b/chrome/browser/cocoa/gradient_button_cell.mm index 2ec70ba..002116d 100644 --- a/chrome/browser/cocoa/gradient_button_cell.mm +++ b/chrome/browser/cocoa/gradient_button_cell.mm @@ -276,7 +276,7 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; strokeColor = themeProvider ? themeProvider->GetNSColor( active ? BrowserThemeProvider::COLOR_TOOLBAR_BUTTON_STROKE : BrowserThemeProvider::COLOR_TOOLBAR_BUTTON_STROKE_INACTIVE, - true) : [NSColor blackColor]; + true) : [NSColor colorWithCalibratedWhite:0.0 alpha:0.6]; } [strokeColor setStroke]; diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 961419e..383018d 100755 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -495,6 +495,8 @@ 'browser/cocoa/bookmark_bar_constants.h', 'browser/cocoa/bookmark_bar_controller.h', 'browser/cocoa/bookmark_bar_controller.mm', + 'browser/cocoa/bookmark_bar_folder_button_cell.h', + 'browser/cocoa/bookmark_bar_folder_button_cell.mm', 'browser/cocoa/bookmark_bar_folder_controller.h', 'browser/cocoa/bookmark_bar_folder_controller.mm', 'browser/cocoa/bookmark_bar_folder_view.h', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 85eedb7..7b3f7d9 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -609,6 +609,7 @@ 'browser/cocoa/bookmark_all_tabs_controller_unittest.mm', 'browser/cocoa/bookmark_bar_bridge_unittest.mm', 'browser/cocoa/bookmark_bar_controller_unittest.mm', + 'browser/cocoa/bookmark_bar_folder_button_cell_unittest.mm', 'browser/cocoa/bookmark_bar_folder_controller_unittest.mm', 'browser/cocoa/bookmark_bar_folder_view_unittest.mm', 'browser/cocoa/bookmark_bar_folder_window_unittest.mm', |