diff options
author | maf@chromium.org <maf@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 19:07:13 +0000 |
---|---|---|
committer | maf@chromium.org <maf@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 19:07:13 +0000 |
commit | de17d3d290d9a63bb117f7e3f956dc9ff4ca6785 (patch) | |
tree | d21e039284af7a41f5a1f71b73b9f0e5a4e1eb1c | |
parent | 15636d35b58dcc3ec8d891f2ffd687d3d07cd885 (diff) | |
download | chromium_src-de17d3d290d9a63bb117f7e3f956dc9ff4ca6785.zip chromium_src-de17d3d290d9a63bb117f7e3f956dc9ff4ca6785.tar.gz chromium_src-de17d3d290d9a63bb117f7e3f956dc9ff4ca6785.tar.bz2 |
Mac bookmark folder menus : dynamically replace generic placeholder icons with the real favicons as they load. Fixes bug where all the bookmark icons are generic the first time each bookmark folder menu is opened after each launch.
R=mrossetti@chromium.org
BUG=39068
Review URL: http://codereview.chromium.org/6858006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81778 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 21 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm index b235502..1a64ebb 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm @@ -2124,6 +2124,9 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { [self checkForBookmarkButtonGrowth:button]; } } + + if (folderController_) + [folderController_ faviconLoadedForNode:node]; } // TODO(jrg): for now this is brute force. diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h index 3d543cf..4079d7a 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h @@ -151,6 +151,10 @@ // Return the parent button that owns the bookmark folder we represent. - (BookmarkButton*)parentButton; +// Gets notified when a fav icon asynchronously loads, so we can now use the +// real icon instead of a generic placeholder. +- (void)faviconLoadedForNode:(const BookmarkNode*)node; + // Offset our folder menu window. This is usually needed in response to a // parent folder menu window or the bookmark bar changing position due to // the dragging of a bookmark node from the parent into this folder menu. diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm index 2e6ff11..7d33f96 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm @@ -1495,6 +1495,20 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { return folderController_; } +- (void)faviconLoadedForNode:(const BookmarkNode*)node { + for (BookmarkButton* button in buttons_.get()) { + if ([button bookmarkNode] == node) { + [button setImage:[barController_ faviconForNode:node]]; + [button setNeedsDisplay:YES]; + return; + } + } + + // Node was not in this menu, try submenu. + if (folderController_) + [folderController_ faviconLoadedForNode:node]; +} + // Add a new folder controller as triggered by the given folder button. - (void)addNewFolderControllerWithParentButton:(BookmarkButton*)parentButton { if (folderController_) |