OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" | 5 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" |
6 | 6 |
7 #include "base/mac/bundle_locations.h" | 7 #include "base/mac/bundle_locations.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 // buttons showing. If too many then show the off-the-side list, if none | 213 // buttons showing. If too many then show the off-the-side list, if none |
214 // then show the no items label. | 214 // then show the no items label. |
215 - (void)reconfigureBookmarkBar; | 215 - (void)reconfigureBookmarkBar; |
216 | 216 |
217 - (void)addNode:(const BookmarkNode*)child toMenu:(NSMenu*)menu; | 217 - (void)addNode:(const BookmarkNode*)child toMenu:(NSMenu*)menu; |
218 - (void)addFolderNode:(const BookmarkNode*)node toMenu:(NSMenu*)menu; | 218 - (void)addFolderNode:(const BookmarkNode*)node toMenu:(NSMenu*)menu; |
219 - (void)tagEmptyMenu:(NSMenu*)menu; | 219 - (void)tagEmptyMenu:(NSMenu*)menu; |
220 - (void)clearMenuTagMap; | 220 - (void)clearMenuTagMap; |
221 - (int)preferredHeight; | 221 - (int)preferredHeight; |
222 - (void)addButtonsToView; | 222 - (void)addButtonsToView; |
| 223 - (BOOL)setBookmarkButtonVisibility; |
223 - (BOOL)setManagedBookmarksButtonVisibility; | 224 - (BOOL)setManagedBookmarksButtonVisibility; |
| 225 - (BOOL)setSupervisedBookmarksButtonVisibility; |
224 - (BOOL)setOtherBookmarksButtonVisibility; | 226 - (BOOL)setOtherBookmarksButtonVisibility; |
225 - (BOOL)setAppsPageShortcutButtonVisibility; | 227 - (BOOL)setAppsPageShortcutButtonVisibility; |
226 - (BookmarkButton*)createCustomBookmarkButtonForCell:(NSCell*)cell; | 228 - (BookmarkButton*)createCustomBookmarkButtonForCell:(NSCell*)cell; |
227 - (void)createManagedBookmarksButton; | 229 - (void)createManagedBookmarksButton; |
| 230 - (void)createSupervisedBookmarksButton; |
228 - (void)createOtherBookmarksButton; | 231 - (void)createOtherBookmarksButton; |
229 - (void)createAppsPageShortcutButton; | 232 - (void)createAppsPageShortcutButton; |
230 - (void)openAppsPage:(id)sender; | 233 - (void)openAppsPage:(id)sender; |
231 - (void)centerNoItemsLabel; | 234 - (void)centerNoItemsLabel; |
232 - (void)positionRightSideButtons; | 235 - (void)positionRightSideButtons; |
233 - (void)watchForExitEvent:(BOOL)watch; | 236 - (void)watchForExitEvent:(BOOL)watch; |
234 - (void)resetAllButtonPositionsWithAnimation:(BOOL)animate; | 237 - (void)resetAllButtonPositionsWithAnimation:(BOOL)animate; |
235 | 238 |
236 @end | 239 @end |
237 | 240 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 for (BookmarkButton* button in [self buttons]) { | 326 for (BookmarkButton* button in [self buttons]) { |
324 if ([button bookmarkNode] == node) { | 327 if ([button bookmarkNode] == node) { |
325 [button setIsContinuousPulsing:doPulse]; | 328 [button setIsContinuousPulsing:doPulse]; |
326 return; | 329 return; |
327 } | 330 } |
328 } | 331 } |
329 if ([managedBookmarksButton_ bookmarkNode] == node) { | 332 if ([managedBookmarksButton_ bookmarkNode] == node) { |
330 [managedBookmarksButton_ setIsContinuousPulsing:doPulse]; | 333 [managedBookmarksButton_ setIsContinuousPulsing:doPulse]; |
331 return; | 334 return; |
332 } | 335 } |
| 336 if ([supervisedBookmarksButton_ bookmarkNode] == node) { |
| 337 [supervisedBookmarksButton_ setIsContinuousPulsing:doPulse]; |
| 338 return; |
| 339 } |
333 if ([otherBookmarksButton_ bookmarkNode] == node) { | 340 if ([otherBookmarksButton_ bookmarkNode] == node) { |
334 [otherBookmarksButton_ setIsContinuousPulsing:doPulse]; | 341 [otherBookmarksButton_ setIsContinuousPulsing:doPulse]; |
335 return; | 342 return; |
336 } | 343 } |
337 if (node->parent() == bookmarkModel_->bookmark_bar_node()) { | 344 if (node->parent() == bookmarkModel_->bookmark_bar_node()) { |
338 [offTheSideButton_ setIsContinuousPulsing:doPulse]; | 345 [offTheSideButton_ setIsContinuousPulsing:doPulse]; |
339 return; | 346 return; |
340 } | 347 } |
341 | 348 |
342 NOTREACHED() << "no bookmark button found to pulse!"; | 349 NOTREACHED() << "no bookmark button found to pulse!"; |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 [buttonView_ setFrame:buttonViewFrame]; | 501 [buttonView_ setFrame:buttonViewFrame]; |
495 | 502 |
496 // Update bookmark button backgrounds. | 503 // Update bookmark button backgrounds. |
497 if ([self isAnimationRunning]) { | 504 if ([self isAnimationRunning]) { |
498 for (NSButton* button in buttons_.get()) | 505 for (NSButton* button in buttons_.get()) |
499 [button setNeedsDisplay:YES]; | 506 [button setNeedsDisplay:YES]; |
500 // Update the apps and other buttons explicitly, since they are not in the | 507 // Update the apps and other buttons explicitly, since they are not in the |
501 // buttons_ array. | 508 // buttons_ array. |
502 [appsPageShortcutButton_ setNeedsDisplay:YES]; | 509 [appsPageShortcutButton_ setNeedsDisplay:YES]; |
503 [managedBookmarksButton_ setNeedsDisplay:YES]; | 510 [managedBookmarksButton_ setNeedsDisplay:YES]; |
| 511 [supervisedBookmarksButton_ setNeedsDisplay:YES]; |
504 [otherBookmarksButton_ setNeedsDisplay:YES]; | 512 [otherBookmarksButton_ setNeedsDisplay:YES]; |
505 } | 513 } |
506 } | 514 } |
507 | 515 |
508 // We don't change a preference; we only change visibility. Preference changing | 516 // We don't change a preference; we only change visibility. Preference changing |
509 // (global state) is handled in |chrome::ToggleBookmarkBarWhenVisible()|. We | 517 // (global state) is handled in |chrome::ToggleBookmarkBarWhenVisible()|. We |
510 // simply update based on what we're told. | 518 // simply update based on what we're told. |
511 - (void)updateVisibility { | 519 - (void)updateVisibility { |
512 [self showBookmarkBarWithAnimation:NO]; | 520 [self showBookmarkBarWithAnimation:NO]; |
513 } | 521 } |
514 | 522 |
515 - (void)updateExtraButtonsVisibility { | 523 - (void)updateExtraButtonsVisibility { |
516 if (!appsPageShortcutButton_.get() || !managedBookmarksButton_.get()) | 524 if (!appsPageShortcutButton_.get() || |
| 525 !managedBookmarksButton_.get() || |
| 526 !supervisedBookmarksButton_.get()) { |
517 return; | 527 return; |
| 528 } |
518 [self setAppsPageShortcutButtonVisibility]; | 529 [self setAppsPageShortcutButtonVisibility]; |
519 [self setManagedBookmarksButtonVisibility]; | 530 [self setManagedBookmarksButtonVisibility]; |
| 531 [self setSupervisedBookmarksButtonVisibility]; |
520 [self resetAllButtonPositionsWithAnimation:NO]; | 532 [self resetAllButtonPositionsWithAnimation:NO]; |
521 [self reconfigureBookmarkBar]; | 533 [self reconfigureBookmarkBar]; |
522 } | 534 } |
523 | 535 |
524 - (void)updateHiddenState { | 536 - (void)updateHiddenState { |
525 BOOL oldHidden = [[self view] isHidden]; | 537 BOOL oldHidden = [[self view] isHidden]; |
526 BOOL newHidden = ![self isVisible]; | 538 BOOL newHidden = ![self isVisible]; |
527 if (oldHidden != newHidden) | 539 if (oldHidden != newHidden) |
528 [[self view] setHidden:newHidden]; | 540 [[self view] setHidden:newHidden]; |
529 } | 541 } |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 - (NSImage*)faviconForNode:(const BookmarkNode*)node { | 594 - (NSImage*)faviconForNode:(const BookmarkNode*)node { |
583 if (!node) | 595 if (!node) |
584 return defaultImage_; | 596 return defaultImage_; |
585 | 597 |
586 if (node == bookmarkClient_->managed_node()) { | 598 if (node == bookmarkClient_->managed_node()) { |
587 // Most users never see this node, so the image is only loaded if needed. | 599 // Most users never see this node, so the image is only loaded if needed. |
588 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 600 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
589 return rb.GetNativeImageNamed(IDR_BOOKMARK_BAR_FOLDER_MANAGED).ToNSImage(); | 601 return rb.GetNativeImageNamed(IDR_BOOKMARK_BAR_FOLDER_MANAGED).ToNSImage(); |
590 } | 602 } |
591 | 603 |
| 604 if (node == bookmarkClient_->supervised_node()) { |
| 605 // Most users never see this node, so the image is only loaded if needed. |
| 606 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 607 return rb.GetNativeImageNamed( |
| 608 IDR_BOOKMARK_BAR_FOLDER_SUPERVISED).ToNSImage(); |
| 609 } |
| 610 |
592 if (node->is_folder()) | 611 if (node->is_folder()) |
593 return folderImage_; | 612 return folderImage_; |
594 | 613 |
595 const gfx::Image& favicon = bookmarkModel_->GetFavicon(node); | 614 const gfx::Image& favicon = bookmarkModel_->GetFavicon(node); |
596 if (!favicon.IsEmpty()) | 615 if (!favicon.IsEmpty()) |
597 return favicon.ToNSImage(); | 616 return favicon.ToNSImage(); |
598 | 617 |
599 return defaultImage_; | 618 return defaultImage_; |
600 } | 619 } |
601 | 620 |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1096 | 1115 |
1097 // Draw the managed bookmark folder if needed. | 1116 // Draw the managed bookmark folder if needed. |
1098 if (![managedBookmarksButton_ isHidden]) { | 1117 if (![managedBookmarksButton_ isHidden]) { |
1099 xOffset += bookmarks::kBookmarkHorizontalPadding; | 1118 xOffset += bookmarks::kBookmarkHorizontalPadding; |
1100 NSRect frame = | 1119 NSRect frame = |
1101 [self frameForBookmarkButtonFromCell:[managedBookmarksButton_ cell] | 1120 [self frameForBookmarkButtonFromCell:[managedBookmarksButton_ cell] |
1102 xOffset:&xOffset]; | 1121 xOffset:&xOffset]; |
1103 [managedBookmarksButton_ setFrame:frame]; | 1122 [managedBookmarksButton_ setFrame:frame]; |
1104 } | 1123 } |
1105 | 1124 |
| 1125 // Draw the supervised bookmark folder if needed. |
| 1126 if (![supervisedBookmarksButton_ isHidden]) { |
| 1127 xOffset += bookmarks::kBookmarkHorizontalPadding; |
| 1128 NSRect frame = |
| 1129 [self frameForBookmarkButtonFromCell:[supervisedBookmarksButton_ cell] |
| 1130 xOffset:&xOffset]; |
| 1131 [supervisedBookmarksButton_ setFrame:frame]; |
| 1132 } |
| 1133 |
1106 for (int i = 0; i < node->child_count(); i++) { | 1134 for (int i = 0; i < node->child_count(); i++) { |
1107 const BookmarkNode* child = node->GetChild(i); | 1135 const BookmarkNode* child = node->GetChild(i); |
1108 BookmarkButton* button = [self buttonForNode:child xOffset:&xOffset]; | 1136 BookmarkButton* button = [self buttonForNode:child xOffset:&xOffset]; |
1109 if (NSMinX([button frame]) >= maxViewX) { | 1137 if (NSMinX([button frame]) >= maxViewX) { |
1110 [button setDelegate:nil]; | 1138 [button setDelegate:nil]; |
1111 break; | 1139 break; |
1112 } | 1140 } |
1113 [buttons_ addObject:button]; | 1141 [buttons_ addObject:button]; |
1114 } | 1142 } |
1115 } | 1143 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1179 ++displayedButtonCount_; | 1207 ++displayedButtonCount_; |
1180 } | 1208 } |
1181 NSUInteger removalCount = | 1209 NSUInteger removalCount = |
1182 [buttons count] - (NSUInteger)displayedButtonCount_; | 1210 [buttons count] - (NSUInteger)displayedButtonCount_; |
1183 if (removalCount > 0) { | 1211 if (removalCount > 0) { |
1184 NSRange removalRange = NSMakeRange(displayedButtonCount_, removalCount); | 1212 NSRange removalRange = NSMakeRange(displayedButtonCount_, removalCount); |
1185 [buttons removeObjectsInRange:removalRange]; | 1213 [buttons removeObjectsInRange:removalRange]; |
1186 } | 1214 } |
1187 } | 1215 } |
1188 | 1216 |
1189 // Shows or hides the Other Bookmarks button as appropriate, and returns | 1217 // Shows or hides the Managed, Supervised, or Other Bookmarks button as |
| 1218 // appropriate, and returns whether it ended up visible. |
| 1219 - (BOOL)setBookmarkButtonVisibility:(BookmarkButton*)button |
| 1220 canShow:(BOOL)show |
| 1221 resetAllButtonPositions:(BOOL)resetButtons { |
| 1222 if (!button) |
| 1223 return NO; |
| 1224 |
| 1225 BOOL visible = ![button bookmarkNode]->empty() && show; |
| 1226 BOOL currentVisibility = ![button isHidden]; |
| 1227 if (currentVisibility != visible) { |
| 1228 [button setHidden:!visible]; |
| 1229 if (resetButtons) |
| 1230 [self resetAllButtonPositionsWithAnimation:NO]; |
| 1231 } |
| 1232 return visible; |
| 1233 } |
| 1234 |
| 1235 // Shows or hides the Managed Bookmarks button as appropriate, and returns |
1190 // whether it ended up visible. | 1236 // whether it ended up visible. |
1191 - (BOOL)setManagedBookmarksButtonVisibility { | 1237 - (BOOL)setManagedBookmarksButtonVisibility { |
1192 if (!managedBookmarksButton_.get()) | 1238 PrefService* prefs = browser_->profile()->GetPrefs(); |
1193 return NO; | 1239 BOOL prefIsSet = |
| 1240 prefs->GetBoolean(bookmarks::prefs::kShowManagedBookmarksInBookmarkBar); |
| 1241 return [self setBookmarkButtonVisibility:managedBookmarksButton_.get() |
| 1242 canShow:prefIsSet |
| 1243 resetAllButtonPositions:YES]; |
| 1244 } |
1194 | 1245 |
1195 PrefService* prefs = browser_->profile()->GetPrefs(); | 1246 // Shows or hides the Supervised Bookmarks button as appropriate, and returns |
1196 BOOL visible = | 1247 // whether it ended up visible. |
1197 ![managedBookmarksButton_ bookmarkNode]->empty() && | 1248 - (BOOL)setSupervisedBookmarksButtonVisibility { |
1198 prefs->GetBoolean(bookmarks::prefs::kShowManagedBookmarksInBookmarkBar); | 1249 return [self setBookmarkButtonVisibility:supervisedBookmarksButton_.get() |
1199 BOOL currentVisibility = ![managedBookmarksButton_ isHidden]; | 1250 canShow:YES |
1200 if (currentVisibility != visible) { | 1251 resetAllButtonPositions:YES]; |
1201 [managedBookmarksButton_ setHidden:!visible]; | |
1202 [self resetAllButtonPositionsWithAnimation:NO]; | |
1203 } | |
1204 return visible; | |
1205 } | 1252 } |
1206 | 1253 |
1207 // Shows or hides the Other Bookmarks button as appropriate, and returns | 1254 // Shows or hides the Other Bookmarks button as appropriate, and returns |
1208 // whether it ended up visible. | 1255 // whether it ended up visible. |
1209 - (BOOL)setOtherBookmarksButtonVisibility { | 1256 - (BOOL)setOtherBookmarksButtonVisibility { |
1210 if (!otherBookmarksButton_.get()) | 1257 return [self setBookmarkButtonVisibility:otherBookmarksButton_.get() |
1211 return NO; | 1258 canShow:YES |
1212 | 1259 resetAllButtonPositions:NO]; |
1213 BOOL visible = ![otherBookmarksButton_ bookmarkNode]->empty(); | |
1214 [otherBookmarksButton_ setHidden:!visible]; | |
1215 return visible; | |
1216 } | 1260 } |
1217 | 1261 |
1218 // Shows or hides the Apps button as appropriate, and returns whether it ended | 1262 // Shows or hides the Apps button as appropriate, and returns whether it ended |
1219 // up visible. | 1263 // up visible. |
1220 - (BOOL)setAppsPageShortcutButtonVisibility { | 1264 - (BOOL)setAppsPageShortcutButtonVisibility { |
1221 if (!appsPageShortcutButton_.get()) | 1265 if (!appsPageShortcutButton_.get()) |
1222 return NO; | 1266 return NO; |
1223 | 1267 |
1224 BOOL visible = bookmarkModel_->loaded() && | 1268 BOOL visible = bookmarkModel_->loaded() && |
1225 chrome::ShouldShowAppsShortcutInBookmarkBar( | 1269 chrome::ShouldShowAppsShortcutInBookmarkBar( |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1261 | 1305 |
1262 NSCell* cell = [self cellForBookmarkNode:bookmarkClient_->managed_node()]; | 1306 NSCell* cell = [self cellForBookmarkNode:bookmarkClient_->managed_node()]; |
1263 managedBookmarksButton_.reset([self createCustomBookmarkButtonForCell:cell]); | 1307 managedBookmarksButton_.reset([self createCustomBookmarkButtonForCell:cell]); |
1264 [managedBookmarksButton_ setAction:@selector(openBookmarkFolderFromButton:)]; | 1308 [managedBookmarksButton_ setAction:@selector(openBookmarkFolderFromButton:)]; |
1265 view_id_util::SetID(managedBookmarksButton_.get(), VIEW_ID_MANAGED_BOOKMARKS); | 1309 view_id_util::SetID(managedBookmarksButton_.get(), VIEW_ID_MANAGED_BOOKMARKS); |
1266 [buttonView_ addSubview:managedBookmarksButton_.get()]; | 1310 [buttonView_ addSubview:managedBookmarksButton_.get()]; |
1267 | 1311 |
1268 [self setManagedBookmarksButtonVisibility]; | 1312 [self setManagedBookmarksButtonVisibility]; |
1269 } | 1313 } |
1270 | 1314 |
| 1315 // Creates the button for "Supervised Bookmarks", but does not position it. |
| 1316 - (void)createSupervisedBookmarksButton { |
| 1317 if (supervisedBookmarksButton_.get()) { |
| 1318 // The button's already there, but its visibility may have changed. |
| 1319 [self setSupervisedBookmarksButtonVisibility]; |
| 1320 return; |
| 1321 } |
| 1322 |
| 1323 NSCell* cell = [self cellForBookmarkNode:bookmarkClient_->supervised_node()]; |
| 1324 supervisedBookmarksButton_.reset( |
| 1325 [self createCustomBookmarkButtonForCell:cell]); |
| 1326 [supervisedBookmarksButton_ |
| 1327 setAction:@selector(openBookmarkFolderFromButton:)]; |
| 1328 view_id_util::SetID(supervisedBookmarksButton_.get(), |
| 1329 VIEW_ID_SUPERVISED_BOOKMARKS); |
| 1330 [buttonView_ addSubview:supervisedBookmarksButton_.get()]; |
| 1331 |
| 1332 [self setSupervisedBookmarksButtonVisibility]; |
| 1333 } |
| 1334 |
1271 // Creates the button for "Other Bookmarks", but does not position it. | 1335 // Creates the button for "Other Bookmarks", but does not position it. |
1272 - (void)createOtherBookmarksButton { | 1336 - (void)createOtherBookmarksButton { |
1273 // Can't create this until the model is loaded, but only need to | 1337 // Can't create this until the model is loaded, but only need to |
1274 // create it once. | 1338 // create it once. |
1275 if (otherBookmarksButton_.get()) { | 1339 if (otherBookmarksButton_.get()) { |
1276 [self setOtherBookmarksButtonVisibility]; | 1340 [self setOtherBookmarksButtonVisibility]; |
1277 return; | 1341 return; |
1278 } | 1342 } |
1279 | 1343 |
1280 NSCell* cell = [self cellForBookmarkNode:bookmarkModel_->other_node()]; | 1344 NSCell* cell = [self cellForBookmarkNode:bookmarkModel_->other_node()]; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1417 } | 1481 } |
1418 | 1482 |
1419 // Delegate method for |AnimatableView| (a superclass of | 1483 // Delegate method for |AnimatableView| (a superclass of |
1420 // |BookmarkBarToolbarView|). | 1484 // |BookmarkBarToolbarView|). |
1421 - (void)animationDidEnd:(NSAnimation*)animation { | 1485 - (void)animationDidEnd:(NSAnimation*)animation { |
1422 [self finalizeState]; | 1486 [self finalizeState]; |
1423 } | 1487 } |
1424 | 1488 |
1425 - (void)reconfigureBookmarkBar { | 1489 - (void)reconfigureBookmarkBar { |
1426 [self setManagedBookmarksButtonVisibility]; | 1490 [self setManagedBookmarksButtonVisibility]; |
| 1491 [self setSupervisedBookmarksButtonVisibility]; |
1427 [self redistributeButtonsOnBarAsNeeded]; | 1492 [self redistributeButtonsOnBarAsNeeded]; |
1428 [self positionRightSideButtons]; | 1493 [self positionRightSideButtons]; |
1429 [self configureOffTheSideButtonContentsAndVisibility]; | 1494 [self configureOffTheSideButtonContentsAndVisibility]; |
1430 [self centerNoItemsLabel]; | 1495 [self centerNoItemsLabel]; |
1431 } | 1496 } |
1432 | 1497 |
1433 // Determine if the given |view| can completely fit within the constraint of | 1498 // Determine if the given |view| can completely fit within the constraint of |
1434 // maximum x, given by |maxViewX|, and, if not, narrow the view up to a minimum | 1499 // maximum x, given by |maxViewX|, and, if not, narrow the view up to a minimum |
1435 // width. If the minimum width is not achievable then hide the view. Return YES | 1500 // width. If the minimum width is not achievable then hide the view. Return YES |
1436 // if the view was hidden. | 1501 // if the view was hidden. |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1489 if (![appsPageShortcutButton_ isHidden]) { | 1554 if (![appsPageShortcutButton_ isHidden]) { |
1490 float width = NSWidth([appsPageShortcutButton_ frame]); | 1555 float width = NSWidth([appsPageShortcutButton_ frame]); |
1491 noItemsRect.origin.x += width; | 1556 noItemsRect.origin.x += width; |
1492 importBookmarksRect.origin.x += width; | 1557 importBookmarksRect.origin.x += width; |
1493 } | 1558 } |
1494 if (![managedBookmarksButton_ isHidden]) { | 1559 if (![managedBookmarksButton_ isHidden]) { |
1495 float width = NSWidth([managedBookmarksButton_ frame]); | 1560 float width = NSWidth([managedBookmarksButton_ frame]); |
1496 noItemsRect.origin.x += width; | 1561 noItemsRect.origin.x += width; |
1497 importBookmarksRect.origin.x += width; | 1562 importBookmarksRect.origin.x += width; |
1498 } | 1563 } |
| 1564 if (![supervisedBookmarksButton_ isHidden]) { |
| 1565 float width = NSWidth([supervisedBookmarksButton_ frame]); |
| 1566 noItemsRect.origin.x += width; |
| 1567 importBookmarksRect.origin.x += width; |
| 1568 } |
1499 [noItemTextfield setFrame:noItemsRect]; | 1569 [noItemTextfield setFrame:noItemsRect]; |
1500 [noItemTextfield setHidden:NO]; | 1570 [noItemTextfield setHidden:NO]; |
1501 NSButton* importBookmarksButton = [buttonView_ importBookmarksButton]; | 1571 NSButton* importBookmarksButton = [buttonView_ importBookmarksButton]; |
1502 [importBookmarksButton setFrame:importBookmarksRect]; | 1572 [importBookmarksButton setFrame:importBookmarksRect]; |
1503 [importBookmarksButton setHidden:NO]; | 1573 [importBookmarksButton setHidden:NO]; |
1504 // Check each to see if they need to be shrunk or hidden. | 1574 // Check each to see if they need to be shrunk or hidden. |
1505 if ([self shrinkOrHideView:importBookmarksButton forMaxX:maxViewX]) | 1575 if ([self shrinkOrHideView:importBookmarksButton forMaxX:maxViewX]) |
1506 [self shrinkOrHideView:noItemTextfield forMaxX:maxViewX]; | 1576 [self shrinkOrHideView:noItemTextfield forMaxX:maxViewX]; |
1507 } | 1577 } |
1508 } | 1578 } |
(...skipping 12 matching lines...) Expand all Loading... |
1521 left = NSMaxX([appsPageShortcutButton_ frame]) + | 1591 left = NSMaxX([appsPageShortcutButton_ frame]) + |
1522 bookmarks::kBookmarkHorizontalPadding; | 1592 bookmarks::kBookmarkHorizontalPadding; |
1523 } | 1593 } |
1524 | 1594 |
1525 // Draw the managed bookmarks folder if needed. | 1595 // Draw the managed bookmarks folder if needed. |
1526 if (![managedBookmarksButton_ isHidden]) { | 1596 if (![managedBookmarksButton_ isHidden]) { |
1527 left = NSMaxX([managedBookmarksButton_ frame]) + | 1597 left = NSMaxX([managedBookmarksButton_ frame]) + |
1528 bookmarks::kBookmarkHorizontalPadding; | 1598 bookmarks::kBookmarkHorizontalPadding; |
1529 } | 1599 } |
1530 | 1600 |
| 1601 // Draw the supervised bookmarks folder if needed. |
| 1602 if (![supervisedBookmarksButton_ isHidden]) { |
| 1603 left = NSMaxX([supervisedBookmarksButton_ frame]) + |
| 1604 bookmarks::kBookmarkHorizontalPadding; |
| 1605 } |
| 1606 |
1531 for (NSButton* button in buttons_.get()) { | 1607 for (NSButton* button in buttons_.get()) { |
1532 // Hidden buttons get no space. | 1608 // Hidden buttons get no space. |
1533 if ([button isHidden]) | 1609 if ([button isHidden]) |
1534 continue; | 1610 continue; |
1535 buttonFrame = [button frame]; | 1611 buttonFrame = [button frame]; |
1536 buttonFrame.origin.x = left; | 1612 buttonFrame.origin.x = left; |
1537 left += buttonFrame.size.width + bookmarks::kBookmarkHorizontalPadding; | 1613 left += buttonFrame.size.width + bookmarks::kBookmarkHorizontalPadding; |
1538 if (button == wantedButton) | 1614 if (button == wantedButton) |
1539 return buttonFrame; | 1615 return buttonFrame; |
1540 } | 1616 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1596 | 1672 |
1597 // As a result of cutting, deleting and dragging, the bar may now have room | 1673 // As a result of cutting, deleting and dragging, the bar may now have room |
1598 // for more buttons. | 1674 // for more buttons. |
1599 int xOffset; | 1675 int xOffset; |
1600 if (displayedButtonCount_ > 0) { | 1676 if (displayedButtonCount_ > 0) { |
1601 xOffset = NSMaxX([self finalRectOfLastButton]) + | 1677 xOffset = NSMaxX([self finalRectOfLastButton]) + |
1602 bookmarks::kBookmarkHorizontalPadding; | 1678 bookmarks::kBookmarkHorizontalPadding; |
1603 } else if (![managedBookmarksButton_ isHidden]) { | 1679 } else if (![managedBookmarksButton_ isHidden]) { |
1604 xOffset = NSMaxX([managedBookmarksButton_ frame]) + | 1680 xOffset = NSMaxX([managedBookmarksButton_ frame]) + |
1605 bookmarks::kBookmarkHorizontalPadding; | 1681 bookmarks::kBookmarkHorizontalPadding; |
| 1682 } else if (![supervisedBookmarksButton_ isHidden]) { |
| 1683 xOffset = NSMaxX([supervisedBookmarksButton_ frame]) + |
| 1684 bookmarks::kBookmarkHorizontalPadding; |
1606 } else if (![appsPageShortcutButton_ isHidden]) { | 1685 } else if (![appsPageShortcutButton_ isHidden]) { |
1607 xOffset = NSMaxX([appsPageShortcutButton_ frame]) + | 1686 xOffset = NSMaxX([appsPageShortcutButton_ frame]) + |
1608 bookmarks::kBookmarkHorizontalPadding; | 1687 bookmarks::kBookmarkHorizontalPadding; |
1609 } else { | 1688 } else { |
1610 xOffset = bookmarks::kBookmarkLeftMargin - | 1689 xOffset = bookmarks::kBookmarkLeftMargin - |
1611 bookmarks::kBookmarkHorizontalPadding; | 1690 bookmarks::kBookmarkHorizontalPadding; |
1612 } | 1691 } |
1613 for (int i = displayedButtonCount_; i < barCount; ++i) { | 1692 for (int i = displayedButtonCount_; i < barCount; ++i) { |
1614 const BookmarkNode* child = node->GetChild(i); | 1693 const BookmarkNode* child = node->GetChild(i); |
1615 BookmarkButton* button = [self buttonForNode:child xOffset:&xOffset]; | 1694 BookmarkButton* button = [self buttonForNode:child xOffset:&xOffset]; |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1803 - (void)updateTheme:(ui::ThemeProvider*)themeProvider { | 1882 - (void)updateTheme:(ui::ThemeProvider*)themeProvider { |
1804 if (!themeProvider) | 1883 if (!themeProvider) |
1805 return; | 1884 return; |
1806 NSColor* color = | 1885 NSColor* color = |
1807 themeProvider->GetNSColor(ThemeProperties::COLOR_BOOKMARK_TEXT); | 1886 themeProvider->GetNSColor(ThemeProperties::COLOR_BOOKMARK_TEXT); |
1808 for (BookmarkButton* button in buttons_.get()) { | 1887 for (BookmarkButton* button in buttons_.get()) { |
1809 BookmarkButtonCell* cell = [button cell]; | 1888 BookmarkButtonCell* cell = [button cell]; |
1810 [cell setTextColor:color]; | 1889 [cell setTextColor:color]; |
1811 } | 1890 } |
1812 [[managedBookmarksButton_ cell] setTextColor:color]; | 1891 [[managedBookmarksButton_ cell] setTextColor:color]; |
| 1892 [[supervisedBookmarksButton_ cell] setTextColor:color]; |
1813 [[otherBookmarksButton_ cell] setTextColor:color]; | 1893 [[otherBookmarksButton_ cell] setTextColor:color]; |
1814 [[appsPageShortcutButton_ cell] setTextColor:color]; | 1894 [[appsPageShortcutButton_ cell] setTextColor:color]; |
1815 } | 1895 } |
1816 | 1896 |
1817 // Return YES if the event indicates an exit from the bookmark bar | 1897 // Return YES if the event indicates an exit from the bookmark bar |
1818 // folder menus. E.g. "click outside" of the area we are watching. | 1898 // folder menus. E.g. "click outside" of the area we are watching. |
1819 // At this time we are watching the area that includes all popup | 1899 // At this time we are watching the area that includes all popup |
1820 // bookmark folder windows. | 1900 // bookmark folder windows. |
1821 - (BOOL)isEventAnExitEvent:(NSEvent*)event { | 1901 - (BOOL)isEventAnExitEvent:(NSEvent*)event { |
1822 NSWindow* eventWindow = [event window]; | 1902 NSWindow* eventWindow = [event window]; |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2032 } | 2112 } |
2033 | 2113 |
2034 // Set insertionPos_ and hasInsertionPos_, and make insertion space for a | 2114 // Set insertionPos_ and hasInsertionPos_, and make insertion space for a |
2035 // hypothetical drop with the new button having a left edge of |where|. | 2115 // hypothetical drop with the new button having a left edge of |where|. |
2036 // Gets called only by our view. | 2116 // Gets called only by our view. |
2037 - (void)setDropInsertionPos:(CGFloat)where { | 2117 - (void)setDropInsertionPos:(CGFloat)where { |
2038 if (!hasInsertionPos_ || where != insertionPos_) { | 2118 if (!hasInsertionPos_ || where != insertionPos_) { |
2039 insertionPos_ = where; | 2119 insertionPos_ = where; |
2040 hasInsertionPos_ = YES; | 2120 hasInsertionPos_ = YES; |
2041 CGFloat left; | 2121 CGFloat left; |
2042 if (![managedBookmarksButton_ isHidden]) { | 2122 if (![supervisedBookmarksButton_ isHidden]) { |
| 2123 left = NSMaxX([supervisedBookmarksButton_ frame]) + |
| 2124 bookmarks::kBookmarkHorizontalPadding; |
| 2125 } else if (![managedBookmarksButton_ isHidden]) { |
2043 left = NSMaxX([managedBookmarksButton_ frame]) + | 2126 left = NSMaxX([managedBookmarksButton_ frame]) + |
2044 bookmarks::kBookmarkHorizontalPadding; | 2127 bookmarks::kBookmarkHorizontalPadding; |
2045 } else if (![appsPageShortcutButton_ isHidden]) { | 2128 } else if (![appsPageShortcutButton_ isHidden]) { |
2046 left = NSMaxX([appsPageShortcutButton_ frame]) + | 2129 left = NSMaxX([appsPageShortcutButton_ frame]) + |
2047 bookmarks::kBookmarkHorizontalPadding; | 2130 bookmarks::kBookmarkHorizontalPadding; |
2048 } else { | 2131 } else { |
2049 left = bookmarks::kBookmarkLeftMargin; | 2132 left = bookmarks::kBookmarkLeftMargin; |
2050 } | 2133 } |
2051 CGFloat paddingWidth = bookmarks::kDefaultBookmarkWidth; | 2134 CGFloat paddingWidth = bookmarks::kDefaultBookmarkWidth; |
2052 BookmarkButton* draggedButton = [BookmarkButton draggedButton]; | 2135 BookmarkButton* draggedButton = [BookmarkButton draggedButton]; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2099 // Position the managed bookmarks folder if needed. | 2182 // Position the managed bookmarks folder if needed. |
2100 if (![managedBookmarksButton_ isHidden]) { | 2183 if (![managedBookmarksButton_ isHidden]) { |
2101 int xOffset = left; | 2184 int xOffset = left; |
2102 NSRect frame = | 2185 NSRect frame = |
2103 [self frameForBookmarkButtonFromCell:[managedBookmarksButton_ cell] | 2186 [self frameForBookmarkButtonFromCell:[managedBookmarksButton_ cell] |
2104 xOffset:&xOffset]; | 2187 xOffset:&xOffset]; |
2105 [managedBookmarksButton_ setFrame:frame]; | 2188 [managedBookmarksButton_ setFrame:frame]; |
2106 left = xOffset + bookmarks::kBookmarkHorizontalPadding; | 2189 left = xOffset + bookmarks::kBookmarkHorizontalPadding; |
2107 } | 2190 } |
2108 | 2191 |
| 2192 // Position the supervised bookmarks folder if needed. |
| 2193 if (![supervisedBookmarksButton_ isHidden]) { |
| 2194 int xOffset = left; |
| 2195 NSRect frame = |
| 2196 [self frameForBookmarkButtonFromCell:[supervisedBookmarksButton_ cell] |
| 2197 xOffset:&xOffset]; |
| 2198 [supervisedBookmarksButton_ setFrame:frame]; |
| 2199 left = xOffset + bookmarks::kBookmarkHorizontalPadding; |
| 2200 } |
| 2201 |
2109 animate &= innerContentAnimationsEnabled_; | 2202 animate &= innerContentAnimationsEnabled_; |
2110 | 2203 |
2111 for (NSButton* button in buttons_.get()) { | 2204 for (NSButton* button in buttons_.get()) { |
2112 // Hidden buttons get no space. | 2205 // Hidden buttons get no space. |
2113 if ([button isHidden]) | 2206 if ([button isHidden]) |
2114 continue; | 2207 continue; |
2115 NSRect buttonFrame = [button frame]; | 2208 NSRect buttonFrame = [button frame]; |
2116 buttonFrame.origin.x = left; | 2209 buttonFrame.origin.x = left; |
2117 left += buttonFrame.size.width + bookmarks::kBookmarkHorizontalPadding; | 2210 left += buttonFrame.size.width + bookmarks::kBookmarkHorizontalPadding; |
2118 if (animate) | 2211 if (animate) |
(...skipping 27 matching lines...) Expand all Loading... |
2146 // See: http://crbug.com/36614 | 2239 // See: http://crbug.com/36614 |
2147 if (folderController_) | 2240 if (folderController_) |
2148 [self closeAllBookmarkFolders]; | 2241 [self closeAllBookmarkFolders]; |
2149 | 2242 |
2150 // Brute force nuke and build. | 2243 // Brute force nuke and build. |
2151 savedFrameWidth_ = NSWidth([[self view] frame]); | 2244 savedFrameWidth_ = NSWidth([[self view] frame]); |
2152 const BookmarkNode* node = model->bookmark_bar_node(); | 2245 const BookmarkNode* node = model->bookmark_bar_node(); |
2153 [self clearBookmarkBar]; | 2246 [self clearBookmarkBar]; |
2154 [self createAppsPageShortcutButton]; | 2247 [self createAppsPageShortcutButton]; |
2155 [self createManagedBookmarksButton]; | 2248 [self createManagedBookmarksButton]; |
| 2249 [self createSupervisedBookmarksButton]; |
2156 [self addNodesToButtonList:node]; | 2250 [self addNodesToButtonList:node]; |
2157 [self createOtherBookmarksButton]; | 2251 [self createOtherBookmarksButton]; |
2158 [self updateTheme:[[[self view] window] themeProvider]]; | 2252 [self updateTheme:[[[self view] window] themeProvider]]; |
2159 [self positionRightSideButtons]; | 2253 [self positionRightSideButtons]; |
2160 [self addButtonsToView]; | 2254 [self addButtonsToView]; |
2161 [self configureOffTheSideButtonContentsAndVisibility]; | 2255 [self configureOffTheSideButtonContentsAndVisibility]; |
2162 [self reconfigureBookmarkBar]; | 2256 [self reconfigureBookmarkBar]; |
2163 } | 2257 } |
2164 | 2258 |
2165 - (void)beingDeleted:(BookmarkModel*)model { | 2259 - (void)beingDeleted:(BookmarkModel*)model { |
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2550 } | 2644 } |
2551 | 2645 |
2552 // Return the x position for a drop indicator. | 2646 // Return the x position for a drop indicator. |
2553 - (CGFloat)indicatorPosForDragToPoint:(NSPoint)point { | 2647 - (CGFloat)indicatorPosForDragToPoint:(NSPoint)point { |
2554 CGFloat x = 0; | 2648 CGFloat x = 0; |
2555 CGFloat halfHorizontalPadding = 0.5 * bookmarks::kBookmarkHorizontalPadding; | 2649 CGFloat halfHorizontalPadding = 0.5 * bookmarks::kBookmarkHorizontalPadding; |
2556 int destIndex = [self indexForDragToPoint:point]; | 2650 int destIndex = [self indexForDragToPoint:point]; |
2557 int numButtons = displayedButtonCount_; | 2651 int numButtons = displayedButtonCount_; |
2558 | 2652 |
2559 CGFloat leftmostX; | 2653 CGFloat leftmostX; |
2560 if (![managedBookmarksButton_ isHidden]) | 2654 if (![supervisedBookmarksButton_ isHidden]) { |
| 2655 leftmostX = |
| 2656 NSMaxX([supervisedBookmarksButton_ frame]) + halfHorizontalPadding; |
| 2657 } else if (![managedBookmarksButton_ isHidden]) { |
2561 leftmostX = NSMaxX([managedBookmarksButton_ frame]) + halfHorizontalPadding; | 2658 leftmostX = NSMaxX([managedBookmarksButton_ frame]) + halfHorizontalPadding; |
2562 else if (![appsPageShortcutButton_ isHidden]) | 2659 } else if (![appsPageShortcutButton_ isHidden]) { |
2563 leftmostX = NSMaxX([appsPageShortcutButton_ frame]) + halfHorizontalPadding; | 2660 leftmostX = NSMaxX([appsPageShortcutButton_ frame]) + halfHorizontalPadding; |
2564 else | 2661 } else { |
2565 leftmostX = bookmarks::kBookmarkLeftMargin - halfHorizontalPadding; | 2662 leftmostX = bookmarks::kBookmarkLeftMargin - halfHorizontalPadding; |
| 2663 } |
2566 | 2664 |
2567 // If it's a drop strictly between existing buttons ... | 2665 // If it's a drop strictly between existing buttons ... |
2568 if (destIndex == 0) { | 2666 if (destIndex == 0) { |
2569 x = leftmostX; | 2667 x = leftmostX; |
2570 } else if (destIndex > 0 && destIndex < numButtons) { | 2668 } else if (destIndex > 0 && destIndex < numButtons) { |
2571 // ... put the indicator right between the buttons. | 2669 // ... put the indicator right between the buttons. |
2572 BookmarkButton* button = | 2670 BookmarkButton* button = |
2573 [buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex-1)]; | 2671 [buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex-1)]; |
2574 DCHECK(button); | 2672 DCHECK(button); |
2575 NSRect buttonFrame = [button frame]; | 2673 NSRect buttonFrame = [button frame]; |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2807 - (id<BookmarkButtonControllerProtocol>)controllerForNode: | 2905 - (id<BookmarkButtonControllerProtocol>)controllerForNode: |
2808 (const BookmarkNode*)node { | 2906 (const BookmarkNode*)node { |
2809 // See if it's in the bar, then if it is in the hierarchy of visible | 2907 // See if it's in the bar, then if it is in the hierarchy of visible |
2810 // folder menus. | 2908 // folder menus. |
2811 if (bookmarkModel_->bookmark_bar_node() == node) | 2909 if (bookmarkModel_->bookmark_bar_node() == node) |
2812 return self; | 2910 return self; |
2813 return [folderController_ controllerForNode:node]; | 2911 return [folderController_ controllerForNode:node]; |
2814 } | 2912 } |
2815 | 2913 |
2816 @end | 2914 @end |
OLD | NEW |