diff options
author | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-03 16:47:13 +0000 |
---|---|---|
committer | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-03 16:47:13 +0000 |
commit | b2d8b5e8189485482b85e6d1a21d10d7779a4d3c (patch) | |
tree | d3b86ccc1959772ad36285b99f609bf567ee7ac5 | |
parent | f62d4d3c21cc27e716b5864379c56d3add1fce9f (diff) | |
download | chromium_src-b2d8b5e8189485482b85e6d1a21d10d7779a4d3c.zip chromium_src-b2d8b5e8189485482b85e6d1a21d10d7779a4d3c.tar.gz chromium_src-b2d8b5e8189485482b85e6d1a21d10d7779a4d3c.tar.bz2 |
Mac: correct favicons in bookmarks bar (for pages w/o one and for subfolders).
Bookmarks for pages without a favicon should display a generic "blank page" icon (this also helps avoid a blank button if the bookmark also doesn't have a title). Also, folders within folders also need to display the folder icon.
BUG=23558
TEST=See above; be sure to test things on the bar and in folders, and make sure that pages with favicons are still displayed correctly.
Review URL: http://codereview.chromium.org/339087
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30818 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/cocoa/bookmark_bar_controller.h | 3 | ||||
-rw-r--r-- | chrome/browser/cocoa/bookmark_bar_controller.mm | 53 |
2 files changed, 26 insertions, 30 deletions
diff --git a/chrome/browser/cocoa/bookmark_bar_controller.h b/chrome/browser/cocoa/bookmark_bar_controller.h index dbf8e7c..eed8c55 100644 --- a/chrome/browser/cocoa/bookmark_bar_controller.h +++ b/chrome/browser/cocoa/bookmark_bar_controller.h @@ -73,6 +73,9 @@ const CGFloat kNoBookmarksNTPVerticalOffset = 27.0; // The folder image so we can use one copy for all buttons scoped_nsobject<NSImage> folderImage_; + // The default image, so we can use one copy for all buttons. + scoped_nsobject<NSImage> defaultImage_; + // If the bar is disabled, we hide it and ignore show/hide commands. // Set when using fullscreen mode. BOOL barIsEnabled_; diff --git a/chrome/browser/cocoa/bookmark_bar_controller.mm b/chrome/browser/cocoa/bookmark_bar_controller.mm index 7100bbb..4118ba4 100644 --- a/chrome/browser/cocoa/bookmark_bar_controller.mm +++ b/chrome/browser/cocoa/bookmark_bar_controller.mm @@ -28,6 +28,7 @@ #include "chrome/browser/tab_contents/tab_contents_view.h" #include "chrome/common/pref_names.h" #include "chrome/common/pref_service.h" +#include "grit/app_resources.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "skia/ext/skia_utils_mac.h" @@ -56,6 +57,7 @@ - (void)addButtonsToView; - (void)resizeButtons; - (void)centerNoItemsLabel; +- (NSImage*)getFavIconForNode:(const BookmarkNode*)node; @end @implementation BookmarkBarController @@ -79,6 +81,7 @@ ResourceBundle& rb = ResourceBundle::GetSharedInstance(); folderImage_.reset([rb.GetNSImageNamed(IDR_BOOKMARK_BAR_FOLDER) retain]); + defaultImage_.reset([rb.GetNSImageNamed(IDR_DEFAULT_FAVICON) retain]); } return self; } @@ -357,6 +360,7 @@ action:nil keyEquivalent:@""] autorelease]; [menu addItem:item]; + [item setImage:[self getFavIconForNode:child]]; if (child->is_folder()) { NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease]; [menu setSubmenu:submenu forItem:item]; @@ -375,13 +379,6 @@ base::SysWideToNSString(child->GetTitle()), url_string.c_str()]; [item setToolTip:tooltip]; - const SkBitmap& favicon = bookmarkModel_->GetFavIcon(child); - if (!favicon.isNull()) { - NSImage* image = gfx::SkBitmapToNSImage(favicon); - if (image) { - [item setImage:image]; - } - } } } @@ -595,19 +592,8 @@ DCHECK(cell); [cell setRepresentedObject:[NSValue valueWithPointer:node]]; - NSImage* image = NULL; - if (node->is_folder()) { - image = folderImage_; - } else { - const SkBitmap& favicon = bookmarkModel_->GetFavIcon(node); - if (!favicon.isNull()) { - image = gfx::SkBitmapToNSImage(favicon); - } - } - if (image) { - [cell setImage:image]; - [cell setImagePosition:NSImageLeft]; - } + [cell setImage:[self getFavIconForNode:node]]; + [cell setImagePosition:NSImageLeft]; [cell setTitle:title]; [cell setMenu:buttonContextMenu_]; return cell; @@ -873,16 +859,12 @@ void* pointer = [[cell representedObject] pointerValue]; const BookmarkNode* cellnode = static_cast<const BookmarkNode*>(pointer); if (cellnode == node) { - NSImage* image = gfx::SkBitmapToNSImage(bookmarkModel_->GetFavIcon(node)); - if (image) { - [cell setImage:image]; - [cell setImagePosition:NSImageLeft]; - // 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. - [self checkForBookmarkButtonGrowth:button]; - } - return; + [cell setImage:[self getFavIconForNode:node]]; + [cell setImagePosition:NSImageLeft]; + // 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. + [self checkForBookmarkButtonGrowth:button]; } } } @@ -909,4 +891,15 @@ return otherBookmarksButton_.get(); } +- (NSImage*)getFavIconForNode:(const BookmarkNode*)node { + if (node->is_folder()) + return folderImage_; + + const SkBitmap& favIcon = bookmarkModel_->GetFavIcon(node); + if (!favIcon.isNull()) + return gfx::SkBitmapToNSImage(favIcon); + + return defaultImage_; +} + @end |