summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaf@chromium.org <maf@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-15 19:07:13 +0000
committermaf@chromium.org <maf@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-15 19:07:13 +0000
commitde17d3d290d9a63bb117f7e3f956dc9ff4ca6785 (patch)
treed21e039284af7a41f5a1f71b73b9f0e5a4e1eb1c
parent15636d35b58dcc3ec8d891f2ffd687d3d07cd885 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm3
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h4
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm14
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_)