Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm

Issue 2361153002: cocoa browser: remove non-material toolbar support (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/toolbar/toolbar_controller.h" 5 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/mac/bundle_locations.h" 9 #include "base/mac/bundle_locations.h"
10 #include "base/mac/foundation_util.h" 10 #include "base/mac/foundation_util.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 using content::OpenURLParams; 73 using content::OpenURLParams;
74 using content::Referrer; 74 using content::Referrer;
75 using content::WebContents; 75 using content::WebContents;
76 76
77 namespace { 77 namespace {
78 78
79 // Duration of the toolbar animation. 79 // Duration of the toolbar animation.
80 const NSTimeInterval kToolBarAnimationDuration = 0.12; 80 const NSTimeInterval kToolBarAnimationDuration = 0.12;
81 81
82 // The height of the location bar in Material Design. 82 // The height of the location bar in Material Design.
83 const CGFloat kMaterialDesignLocationBarHeight = 28; 83 const CGFloat kMaterialDesignLocationBarHeight = 28;
Evan Stade 2016/09/27 19:34:51 nit: remove references to MD
84 84
85 // The padding between the top of the toolbar and the top of the 85 // The padding between the top of the toolbar and the top of the
86 // location bar. 86 // location bar.
87 const CGFloat kMaterialDesignLocationBarPadding = 2; 87 const CGFloat kMaterialDesignLocationBarPadding = 2;
88 88
89 // The padding between Material Design elements and the edges of the toolbar. 89 // The padding between Material Design elements and the edges of the toolbar.
90 const CGFloat kMaterialDesignElementPadding = 4; 90 const CGFloat kMaterialDesignElementPadding = 4;
91 91
92 // Toolbar buttons are 24x24 and centered in a 28x28 space, so there is a 2pt- 92 // Toolbar buttons are 24x24 and centered in a 28x28 space, so there is a 2pt-
93 // wide inset. 93 // wide inset.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 DISALLOW_COPY_AND_ASSIGN(NotificationBridge); 223 DISALLOW_COPY_AND_ASSIGN(NotificationBridge);
224 }; 224 };
225 225
226 } // namespace ToolbarControllerInternal 226 } // namespace ToolbarControllerInternal
227 227
228 @implementation ToolbarController 228 @implementation ToolbarController
229 229
230 @synthesize browser = browser_; 230 @synthesize browser = browser_;
231 231
232 + (CGFloat)locationBarHeight { 232 + (CGFloat)locationBarHeight {
233 if (!ui::MaterialDesignController::IsModeMaterial()) {
234 return 29;
235 }
236
237 return kMaterialDesignLocationBarHeight; 233 return kMaterialDesignLocationBarHeight;
238 } 234 }
239 235
240 + (CGFloat)appMenuLeftPadding { 236 + (CGFloat)appMenuLeftPadding {
241 if (!ui::MaterialDesignController::IsModeMaterial()) {
242 return 3;
243 }
244
245 return kMaterialDesignElementPadding; 237 return kMaterialDesignElementPadding;
246 } 238 }
247 239
248 + (CGFloat)materialDesignButtonInset { 240 + (CGFloat)materialDesignButtonInset {
249 return kMaterialDesignButtonInset; 241 return kMaterialDesignButtonInset;
250 } 242 }
251 243
252 - (id)initWithCommands:(CommandUpdater*)commands 244 - (id)initWithCommands:(CommandUpdater*)commands
253 profile:(Profile*)profile 245 profile:(Profile*)profile
254 browser:(Browser*)browser 246 browser:(Browser*)browser
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 287
296 - (void)viewDidLoad { 288 - (void)viewDidLoad {
297 // When linking and running on 10.10+, both -awakeFromNib and -viewDidLoad may 289 // When linking and running on 10.10+, both -awakeFromNib and -viewDidLoad may
298 // be called, don't initialize twice. 290 // be called, don't initialize twice.
299 if (locationBarView_) { 291 if (locationBarView_) {
300 DCHECK(base::mac::IsAtLeastOS10_10()); 292 DCHECK(base::mac::IsAtLeastOS10_10());
301 return; 293 return;
302 } 294 }
303 295
304 // Make Material Design layout adjustments to the NIB items. 296 // Make Material Design layout adjustments to the NIB items.
305 bool isModeMaterial = ui::MaterialDesignController::IsModeMaterial(); 297 ToolbarView* toolbarView = [self toolbarView];
306 if (isModeMaterial) { 298 NSRect toolbarBounds = [toolbarView bounds];
307 ToolbarView* toolbarView = [self toolbarView]; 299 NSSize toolbarButtonSize = [ToolbarButton toolbarButtonSize];
308 NSRect toolbarBounds = [toolbarView bounds];
309 NSSize toolbarButtonSize = [ToolbarButton toolbarButtonSize];
310 300
311 // Set the toolbar height. 301 // Set the toolbar height.
312 NSRect frame = [toolbarView frame]; 302 NSRect frame = [toolbarView frame];
313 frame.size.height = [self baseToolbarHeight]; 303 frame.size.height = [self baseToolbarHeight];
314 [toolbarView setFrame:frame]; 304 [toolbarView setFrame:frame];
315 305
316 NSRect backButtonFrame = [backButton_ frame]; 306 NSRect backButtonFrame = [backButton_ frame];
317 backButtonFrame.origin.x = 307 backButtonFrame.origin.x =
318 kMaterialDesignElementPadding + kMaterialDesignButtonInset; 308 kMaterialDesignElementPadding + kMaterialDesignButtonInset;
319 backButtonFrame.origin.y = NSMaxY(toolbarBounds) - 309 backButtonFrame.origin.y = NSMaxY(toolbarBounds) -
320 kMaterialDesignElementPadding - toolbarButtonSize.height; 310 kMaterialDesignElementPadding - toolbarButtonSize.height;
321 backButtonFrame.size = toolbarButtonSize; 311 backButtonFrame.size = toolbarButtonSize;
322 [backButton_ setFrame:backButtonFrame]; 312 [backButton_ setFrame:backButtonFrame];
323 313
324 NSRect forwardButtonFrame = [forwardButton_ frame]; 314 NSRect forwardButtonFrame = [forwardButton_ frame];
325 forwardButtonFrame.origin.x = 315 forwardButtonFrame.origin.x =
326 NSMaxX(backButtonFrame) + 2 * kMaterialDesignButtonInset; 316 NSMaxX(backButtonFrame) + 2 * kMaterialDesignButtonInset;
327 forwardButtonFrame.origin.y = backButtonFrame.origin.y; 317 forwardButtonFrame.origin.y = backButtonFrame.origin.y;
328 forwardButtonFrame.size = toolbarButtonSize; 318 forwardButtonFrame.size = toolbarButtonSize;
329 [forwardButton_ setFrame:forwardButtonFrame]; 319 [forwardButton_ setFrame:forwardButtonFrame];
330 320
331 NSRect reloadButtonFrame = [reloadButton_ frame]; 321 NSRect reloadButtonFrame = [reloadButton_ frame];
332 reloadButtonFrame.origin.x = 322 reloadButtonFrame.origin.x =
333 NSMaxX(forwardButtonFrame) + 2 * kMaterialDesignButtonInset; 323 NSMaxX(forwardButtonFrame) + 2 * kMaterialDesignButtonInset;
334 reloadButtonFrame.origin.y = forwardButtonFrame.origin.y; 324 reloadButtonFrame.origin.y = forwardButtonFrame.origin.y;
335 reloadButtonFrame.size = toolbarButtonSize; 325 reloadButtonFrame.size = toolbarButtonSize;
336 [reloadButton_ setFrame:reloadButtonFrame]; 326 [reloadButton_ setFrame:reloadButtonFrame];
337 327
338 NSRect homeButtonFrame = [homeButton_ frame]; 328 NSRect homeButtonFrame = [homeButton_ frame];
339 homeButtonFrame.origin.x = 329 homeButtonFrame.origin.x =
340 NSMaxX(reloadButtonFrame) + 2 * kMaterialDesignButtonInset; 330 NSMaxX(reloadButtonFrame) + 2 * kMaterialDesignButtonInset;
341 homeButtonFrame.origin.y = reloadButtonFrame.origin.y; 331 homeButtonFrame.origin.y = reloadButtonFrame.origin.y;
342 homeButtonFrame.size = toolbarButtonSize; 332 homeButtonFrame.size = toolbarButtonSize;
343 [homeButton_ setFrame:homeButtonFrame]; 333 [homeButton_ setFrame:homeButtonFrame];
344 334
345 // Replace the app button from the nib with an AppToolbarButton instance for 335 // Replace the app button from the nib with an AppToolbarButton instance for
Evan Stade 2016/09/27 19:34:51 can you remove AppToolbarButtonCell now too?
346 // Material Design. 336 // Material Design.
Evan Stade 2016/09/27 19:34:51 nit: remove references to material design (since i
347 AppToolbarButton* newMenuButton = 337 AppToolbarButton* newMenuButton =
348 [[[AppToolbarButton alloc] initWithFrame:[appMenuButton_ frame]] 338 [[[AppToolbarButton alloc] initWithFrame:[appMenuButton_ frame]]
349 autorelease]; 339 autorelease];
350 [newMenuButton setAutoresizingMask:[appMenuButton_ autoresizingMask]]; 340 [newMenuButton setAutoresizingMask:[appMenuButton_ autoresizingMask]];
351 [[appMenuButton_ superview] addSubview:newMenuButton]; 341 [[appMenuButton_ superview] addSubview:newMenuButton];
352 [appMenuButton_ removeFromSuperview]; 342 [appMenuButton_ removeFromSuperview];
353 appMenuButton_ = newMenuButton; 343 appMenuButton_ = newMenuButton;
354 344
355 // Adjust the menu button's position. 345 // Adjust the menu button's position.
356 NSRect menuButtonFrame = [appMenuButton_ frame]; 346 NSRect menuButtonFrame = [appMenuButton_ frame];
357 CGFloat menuButtonFrameMaxX = 347 CGFloat menuButtonFrameMaxX =
358 NSMaxX(toolbarBounds) - [ToolbarController appMenuLeftPadding]; 348 NSMaxX(toolbarBounds) - [ToolbarController appMenuLeftPadding];
359 menuButtonFrame.origin.x = 349 menuButtonFrame.origin.x =
360 menuButtonFrameMaxX - kMaterialDesignButtonInset - 350 menuButtonFrameMaxX - kMaterialDesignButtonInset -
361 toolbarButtonSize.width; 351 toolbarButtonSize.width;
362 menuButtonFrame.origin.y = homeButtonFrame.origin.y; 352 menuButtonFrame.origin.y = homeButtonFrame.origin.y;
363 menuButtonFrame.size = toolbarButtonSize; 353 menuButtonFrame.size = toolbarButtonSize;
364 [appMenuButton_ setFrame:menuButtonFrame]; 354 [appMenuButton_ setFrame:menuButtonFrame];
365 355
366 // Adjust the size and location on the location bar to take up the 356 // Adjust the size and location on the location bar to take up the
367 // space between the reload and menu buttons. 357 // space between the reload and menu buttons.
368 NSRect locationBarFrame = [locationBar_ frame]; 358 NSRect locationBarFrame = [locationBar_ frame];
369 locationBarFrame.origin.x = NSMaxX(homeButtonFrame) + 359 locationBarFrame.origin.x = NSMaxX(homeButtonFrame) +
370 kMaterialDesignButtonInset; 360 kMaterialDesignButtonInset;
371 if (![homeButton_ isHidden]) { 361 if (![homeButton_ isHidden]) {
372 // Ensure proper spacing between the home button and the location bar. 362 // Ensure proper spacing between the home button and the location bar.
373 locationBarFrame.origin.x += kMaterialDesignElementPadding; 363 locationBarFrame.origin.x += kMaterialDesignElementPadding;
374 } 364 }
375 locationBarFrame.origin.y = NSMaxY(toolbarBounds) - 365 locationBarFrame.origin.y = NSMaxY(toolbarBounds) -
376 kMaterialDesignLocationBarPadding - kMaterialDesignLocationBarHeight; 366 kMaterialDesignLocationBarPadding - kMaterialDesignLocationBarHeight;
377 locationBarFrame.size.width = 367 locationBarFrame.size.width =
378 menuButtonFrame.origin.x - 368 menuButtonFrame.origin.x -
379 locationBarFrame.origin.x; 369 locationBarFrame.origin.x;
380 locationBarFrame.size.height = kMaterialDesignLocationBarHeight; 370 locationBarFrame.size.height = kMaterialDesignLocationBarHeight;
381 [locationBar_ setFrame:locationBarFrame]; 371 [locationBar_ setFrame:locationBarFrame];
382 372
383 // Correctly position the extension buttons' container view. 373 // Correctly position the extension buttons' container view.
384 NSRect containerFrame = [browserActionsContainerView_ frame]; 374 NSRect containerFrame = [browserActionsContainerView_ frame];
385 containerFrame.size.width += kMaterialDesignButtonInset; 375 containerFrame.size.width += kMaterialDesignButtonInset;
386 containerFrame.origin.y = 376 containerFrame.origin.y =
387 locationBarFrame.origin.y + kMaterialDesignContainerYOffset; 377 locationBarFrame.origin.y + kMaterialDesignContainerYOffset;
388 containerFrame.size.height = toolbarButtonSize.height; 378 containerFrame.size.height = toolbarButtonSize.height;
389 [browserActionsContainerView_ setFrame:containerFrame]; 379 [browserActionsContainerView_ setFrame:containerFrame];
390 } else {
391 [[backButton_ cell] setImageID:IDR_BACK
392 forButtonState:image_button_cell::kDefaultState];
393 [[backButton_ cell] setImageID:IDR_BACK_H
394 forButtonState:image_button_cell::kHoverState];
395 [[backButton_ cell] setImageID:IDR_BACK_P
396 forButtonState:image_button_cell::kPressedState];
397 [[backButton_ cell] setImageID:IDR_BACK_D
398 forButtonState:image_button_cell::kDisabledState];
399
400 [[forwardButton_ cell] setImageID:IDR_FORWARD
401 forButtonState:image_button_cell::kDefaultState];
402 [[forwardButton_ cell] setImageID:IDR_FORWARD_H
403 forButtonState:image_button_cell::kHoverState];
404 [[forwardButton_ cell] setImageID:IDR_FORWARD_P
405 forButtonState:image_button_cell::kPressedState];
406 [[forwardButton_ cell] setImageID:IDR_FORWARD_D
407 forButtonState:image_button_cell::kDisabledState];
408
409 [[reloadButton_ cell] setImageID:IDR_RELOAD
410 forButtonState:image_button_cell::kDefaultState];
411 [[reloadButton_ cell] setImageID:IDR_RELOAD_H
412 forButtonState:image_button_cell::kHoverState];
413 [[reloadButton_ cell] setImageID:IDR_RELOAD_P
414 forButtonState:image_button_cell::kPressedState];
415
416 [[homeButton_ cell] setImageID:IDR_HOME
417 forButtonState:image_button_cell::kDefaultState];
418 [[homeButton_ cell] setImageID:IDR_HOME_H
419 forButtonState:image_button_cell::kHoverState];
420 [[homeButton_ cell] setImageID:IDR_HOME_P
421 forButtonState:image_button_cell::kPressedState];
422
423 [[appMenuButton_ cell] setImageID:IDR_TOOLS
424 forButtonState:image_button_cell::kDefaultState];
425 [[appMenuButton_ cell] setImageID:IDR_TOOLS_H
426 forButtonState:image_button_cell::kHoverState];
427 [[appMenuButton_ cell] setImageID:IDR_TOOLS_P
428 forButtonState:image_button_cell::kPressedState];
429
430 // Adjust the toolbar height if running on Retina - see the comment in
431 // -baseToolbarHeight.
432 CGFloat toolbarHeight = [self baseToolbarHeight];
433 ToolbarView* toolbarView = [self toolbarView];
434 NSRect toolbarFrame = [toolbarView frame];
435 if (toolbarFrame.size.height != toolbarHeight) {
436 toolbarFrame.size.height = toolbarHeight;
437 [toolbarView setFrame:toolbarFrame];
438 }
439 }
440 380
441 notificationBridge_.reset( 381 notificationBridge_.reset(
442 new ToolbarControllerInternal::NotificationBridge(self)); 382 new ToolbarControllerInternal::NotificationBridge(self));
443 notificationBridge_->UpdateSeverity(); 383 notificationBridge_->UpdateSeverity();
444 384
445 [appMenuButton_ setOpenMenuOnClick:YES]; 385 [appMenuButton_ setOpenMenuOnClick:YES];
446 386
447 [backButton_ setOpenMenuOnRightClick:YES]; 387 [backButton_ setOpenMenuOnRightClick:YES];
448 [forwardButton_ setOpenMenuOnRightClick:YES]; 388 [forwardButton_ setOpenMenuOnRightClick:YES];
449 389
(...skipping 15 matching lines...) Expand all
465 // The |locationBarView_| is responsible for positioning the accessibility 405 // The |locationBarView_| is responsible for positioning the accessibility
466 // views. 406 // views.
467 std::vector<NSView*> accessibility_views = 407 std::vector<NSView*> accessibility_views =
468 locationBarView_->GetDecorationAccessibilityViews(); 408 locationBarView_->GetDecorationAccessibilityViews();
469 for (const auto& view : accessibility_views) { 409 for (const auto& view : accessibility_views) {
470 [[self toolbarView] addSubview:view 410 [[self toolbarView] addSubview:view
471 positioned:NSWindowAbove 411 positioned:NSWindowAbove
472 relativeTo:locationBar_]; 412 relativeTo:locationBar_];
473 } 413 }
474 414
475 if (!isModeMaterial) {
476 [locationBar_ setFont:[NSFont systemFontOfSize:[NSFont systemFontSize]]];
477 }
478
479 // Register pref observers for the optional home and page/options buttons 415 // Register pref observers for the optional home and page/options buttons
480 // and then add them to the toolbar based on those prefs. 416 // and then add them to the toolbar based on those prefs.
481 PrefService* prefs = profile_->GetPrefs(); 417 PrefService* prefs = profile_->GetPrefs();
482 showHomeButton_.Init( 418 showHomeButton_.Init(
483 prefs::kShowHomeButton, prefs, 419 prefs::kShowHomeButton, prefs,
484 base::Bind( 420 base::Bind(
485 &ToolbarControllerInternal::NotificationBridge::OnPreferenceChanged, 421 &ToolbarControllerInternal::NotificationBridge::OnPreferenceChanged,
486 base::Unretained(notificationBridge_.get()))); 422 base::Unretained(notificationBridge_.get())));
487 [self showOptionalHomeButton]; 423 [self showOptionalHomeButton];
488 [self installAppMenu]; 424 [self installAppMenu];
(...skipping 11 matching lines...) Expand all
500 button:forwardButton_]); 436 button:forwardButton_]);
501 437
502 trackingArea_.reset( 438 trackingArea_.reset(
503 [[CrTrackingArea alloc] initWithRect:NSZeroRect // Ignored 439 [[CrTrackingArea alloc] initWithRect:NSZeroRect // Ignored
504 options:NSTrackingMouseMoved | 440 options:NSTrackingMouseMoved |
505 NSTrackingInVisibleRect | 441 NSTrackingInVisibleRect |
506 NSTrackingMouseEnteredAndExited | 442 NSTrackingMouseEnteredAndExited |
507 NSTrackingActiveAlways 443 NSTrackingActiveAlways
508 owner:self 444 owner:self
509 userInfo:nil]); 445 userInfo:nil]);
510 NSView* toolbarView = [self view]; 446 NSView* parentView = [self view];
511 [toolbarView addTrackingArea:trackingArea_.get()]; 447 [parentView addTrackingArea:trackingArea_.get()];
512 448
513 // If the user has any Browser Actions installed, the container view for them 449 // If the user has any Browser Actions installed, the container view for them
514 // may have to be resized depending on the width of the toolbar frame. 450 // may have to be resized depending on the width of the toolbar frame.
515 [toolbarView setPostsFrameChangedNotifications:YES]; 451 [parentView setPostsFrameChangedNotifications:YES];
516 [[NSNotificationCenter defaultCenter] 452 [[NSNotificationCenter defaultCenter]
517 addObserver:self 453 addObserver:self
518 selector:@selector(toolbarFrameChanged) 454 selector:@selector(toolbarFrameChanged)
519 name:NSViewFrameDidChangeNotification 455 name:NSViewFrameDidChangeNotification
520 object:toolbarView]; 456 object:parentView];
521 457
522 // Set ViewIDs for toolbar elements which don't have their dedicated class. 458 // Set ViewIDs for toolbar elements which don't have their dedicated class.
523 // ViewIDs of |toolbarView|, |reloadButton_|, |locationBar_| and 459 // ViewIDs of |toolbarView|, |reloadButton_|, |locationBar_| and
524 // |browserActionsContainerView_| are handled by themselves. 460 // |browserActionsContainerView_| are handled by themselves.
525 view_id_util::SetID(backButton_, VIEW_ID_BACK_BUTTON); 461 view_id_util::SetID(backButton_, VIEW_ID_BACK_BUTTON);
526 view_id_util::SetID(forwardButton_, VIEW_ID_FORWARD_BUTTON); 462 view_id_util::SetID(forwardButton_, VIEW_ID_FORWARD_BUTTON);
527 view_id_util::SetID(homeButton_, VIEW_ID_HOME_BUTTON); 463 view_id_util::SetID(homeButton_, VIEW_ID_HOME_BUTTON);
528 view_id_util::SetID(appMenuButton_, VIEW_ID_APP_MENU); 464 view_id_util::SetID(appMenuButton_, VIEW_ID_APP_MENU);
529 465
530 [self addAccessibilityDescriptions]; 466 [self addAccessibilityDescriptions];
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 if (!hasToolbar_) 729 if (!hasToolbar_)
794 return; 730 return;
795 BOOL hide = showHomeButton_.GetValue() ? NO : YES; 731 BOOL hide = showHomeButton_.GetValue() ? NO : YES;
796 if (hide == [homeButton_ isHidden]) 732 if (hide == [homeButton_ isHidden])
797 return; // Nothing to do, view state matches pref state. 733 return; // Nothing to do, view state matches pref state.
798 734
799 // Always shift the text field by the width of the home button minus one pixel 735 // Always shift the text field by the width of the home button minus one pixel
800 // since the frame edges of each button are right on top of each other. When 736 // since the frame edges of each button are right on top of each other. When
801 // hiding the button, reverse the direction of the movement (to the left). 737 // hiding the button, reverse the direction of the movement (to the left).
802 CGFloat moveX = [homeButton_ frame].size.width; 738 CGFloat moveX = [homeButton_ frame].size.width;
803 if (!ui::MaterialDesignController::IsModeMaterial()) { 739 // Ensure proper spacing between the home button and the location bar.
804 moveX -= 1.0; 740 moveX += kMaterialDesignElementPadding;
805 } else {
806 // Ensure proper spacing between the home button and the location bar.
807 moveX += kMaterialDesignElementPadding;
808 }
809 if (hide) 741 if (hide)
810 moveX *= -1; // Reverse the direction of the move. 742 moveX *= -1; // Reverse the direction of the move.
811 743
812 [locationBar_ setFrame:[self adjustRect:[locationBar_ frame] 744 [locationBar_ setFrame:[self adjustRect:[locationBar_ frame]
813 byAmount:moveX]]; 745 byAmount:moveX]];
814 [homeButton_ setHidden:hide]; 746 [homeButton_ setHidden:hide];
815 } 747 }
816 748
817 // Install the app menu buttons. Calling this repeatedly is inexpensive so it 749 // Install the app menu buttons. Calling this repeatedly is inexpensive so it
818 // can be done every time the buttons are shown. 750 // can be done every time the buttons are shown.
819 - (void)installAppMenu { 751 - (void)installAppMenu {
820 if (appMenuController_.get()) 752 if (appMenuController_.get())
821 return; 753 return;
822 754
823 appMenuController_.reset( 755 appMenuController_.reset(
824 [[AppMenuController alloc] initWithBrowser:browser_]); 756 [[AppMenuController alloc] initWithBrowser:browser_]);
825 [appMenuController_ setUseWithPopUpButtonCell:YES]; 757 [appMenuController_ setUseWithPopUpButtonCell:YES];
826 [appMenuButton_ setAttachedMenu:[appMenuController_ menu]]; 758 [appMenuButton_ setAttachedMenu:[appMenuController_ menu]];
827 } 759 }
828 760
829 - (void)updateAppMenuButtonSeverity:(AppMenuIconPainter::Severity)severity 761 - (void)updateAppMenuButtonSeverity:(AppMenuIconPainter::Severity)severity
830 iconType:(AppMenuIconController::IconType)iconType 762 iconType:(AppMenuIconController::IconType)iconType
831 animate:(BOOL)animate { 763 animate:(BOOL)animate {
832 if (!ui::MaterialDesignController::IsModeMaterial()) {
833 AppToolbarButtonCell* cell =
834 base::mac::ObjCCastStrict<AppToolbarButtonCell>([appMenuButton_ cell]);
835 [cell setSeverity:severity shouldAnimate:animate];
836 return;
837 }
838 AppToolbarButton* appMenuButton = 764 AppToolbarButton* appMenuButton =
839 base::mac::ObjCCastStrict<AppToolbarButton>(appMenuButton_); 765 base::mac::ObjCCastStrict<AppToolbarButton>(appMenuButton_);
840 [appMenuButton setSeverity:severity iconType:iconType shouldAnimate:animate]; 766 [appMenuButton setSeverity:severity iconType:iconType shouldAnimate:animate];
841 } 767 }
842 768
843 - (void)prefChanged:(const std::string&)prefName { 769 - (void)prefChanged:(const std::string&)prefName {
844 if (prefName == prefs::kShowHomeButton) { 770 if (prefName == prefs::kShowHomeButton) {
845 [self showOptionalHomeButton]; 771 [self showOptionalHomeButton];
846 } 772 }
847 } 773 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 846
921 if ([browserActionsContainerView_ isHidden]) { 847 if ([browserActionsContainerView_ isHidden]) {
922 CGFloat edgeXPos = [appMenuButton_ frame].origin.x; 848 CGFloat edgeXPos = [appMenuButton_ frame].origin.x;
923 leftDistance = edgeXPos - locationBarXPos - 849 leftDistance = edgeXPos - locationBarXPos -
924 [ToolbarController appMenuLeftPadding]; 850 [ToolbarController appMenuLeftPadding];
925 } else { 851 } else {
926 leftDistance = NSMinX([browserActionsContainerView_ animationEndFrame]) - 852 leftDistance = NSMinX([browserActionsContainerView_ animationEndFrame]) -
927 locationBarXPos; 853 locationBarXPos;
928 // Equalize the distance between the location bar and the first extension 854 // Equalize the distance between the location bar and the first extension
929 // button, and the distance between the location bar and home/reload button. 855 // button, and the distance between the location bar and home/reload button.
930 if (ui::MaterialDesignController::IsModeMaterial()) { 856 leftDistance -= kMaterialDesignButtonInset;
931 leftDistance -= kMaterialDesignButtonInset;
932 }
933 } 857 }
934 if (leftDistance != 0.0) 858 if (leftDistance != 0.0)
935 [self adjustLocationSizeBy:leftDistance animate:animate]; 859 [self adjustLocationSizeBy:leftDistance animate:animate];
936 else 860 else
937 [locationBar_ stopAnimation]; 861 [locationBar_ stopAnimation];
938 } 862 }
939 863
940 - (void)maintainMinimumLocationBarWidth { 864 - (void)maintainMinimumLocationBarWidth {
941 CGFloat locationBarWidth = NSWidth([locationBar_ frame]); 865 CGFloat locationBarWidth = NSWidth([locationBar_ frame]);
942 locationBarAtMinSize_ = locationBarWidth <= kMinimumLocationBarWidth; 866 locationBarAtMinSize_ = locationBarWidth <= kMinimumLocationBarWidth;
(...skipping 10 matching lines...) Expand all
953 return; 877 return;
954 878
955 if ([browserActionsContainerView_ isAnimating]) { 879 if ([browserActionsContainerView_ isAnimating]) {
956 // If the browser actions container is animating, we need to stop it first, 880 // If the browser actions container is animating, we need to stop it first,
957 // because the frame it's animating for could be incorrect with the new 881 // because the frame it's animating for could be incorrect with the new
958 // bounds (if, for instance, the bookmark bar was added). 882 // bounds (if, for instance, the bookmark bar was added).
959 // This will advance to the end of the animation, so we also need to adjust 883 // This will advance to the end of the animation, so we also need to adjust
960 // it afterwards. 884 // it afterwards.
961 [browserActionsContainerView_ stopAnimation]; 885 [browserActionsContainerView_ stopAnimation];
962 NSRect containerFrame = [browserActionsContainerView_ frame]; 886 NSRect containerFrame = [browserActionsContainerView_ frame];
963 if (!ui::MaterialDesignController::IsModeMaterial()) { 887 containerFrame.origin.y =
964 CGFloat elementTopPadding = 888 [locationBar_ frame].origin.y + kMaterialDesignContainerYOffset;
965 kMaterialDesignElementPadding + kMaterialDesignButtonInset;
966 // Pre-Material Design, this value is calculated from the values in
967 // Toolbar.xib: the height of the toolbar (35) minus the height of the
968 // child elements (29) minus the y-origin of the elements (4).
969 elementTopPadding = 2;
970 containerFrame.origin.y =
971 NSHeight([[self view] frame]) - NSHeight(containerFrame) -
972 elementTopPadding;
973 } else {
974 containerFrame.origin.y =
975 [locationBar_ frame].origin.y + kMaterialDesignContainerYOffset;
976 }
977 [browserActionsContainerView_ setFrame:containerFrame]; 889 [browserActionsContainerView_ setFrame:containerFrame];
978 [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:NO]; 890 [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:NO];
979 } 891 }
980 892
981 [self maintainMinimumLocationBarWidth]; 893 [self maintainMinimumLocationBarWidth];
982 894
983 if (locationBarAtMinSize_) { 895 if (locationBarAtMinSize_) {
984 // Once the grippy is pinned, leave it until it is explicity un-pinned. 896 // Once the grippy is pinned, leave it until it is explicity un-pinned.
985 [browserActionsContainerView_ setGrippyPinned:YES]; 897 [browserActionsContainerView_ setGrippyPinned:YES];
986 NSRect containerFrame = [browserActionsContainerView_ frame]; 898 NSRect containerFrame = [browserActionsContainerView_ frame];
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 - (NSPoint)saveCreditCardBubblePoint { 983 - (NSPoint)saveCreditCardBubblePoint {
1072 return locationBarView_->GetSaveCreditCardBubblePoint(); 984 return locationBarView_->GetSaveCreditCardBubblePoint();
1073 } 985 }
1074 986
1075 - (NSPoint)translateBubblePoint { 987 - (NSPoint)translateBubblePoint {
1076 return locationBarView_->GetTranslateBubblePoint(); 988 return locationBarView_->GetTranslateBubblePoint();
1077 } 989 }
1078 990
1079 - (CGFloat)baseToolbarHeight { 991 - (CGFloat)baseToolbarHeight {
1080 // Height of the toolbar in pixels when the bookmark bar is closed. 992 // Height of the toolbar in pixels when the bookmark bar is closed.
1081 const bool kIsModeMaterial = ui::MaterialDesignController::IsModeMaterial(); 993 const CGFloat kBaseToolbarHeightNormal = 37;
1082 const CGFloat kBaseToolbarHeightNormal = kIsModeMaterial ? 37 : 35; 994 return kBaseToolbarHeightNormal;
1083
1084 // Not all lines are drawn at 2x normal height when running on Retina, which
1085 // causes the toolbar controls to be visually 1pt too high within the toolbar
1086 // area. It's not possible to adjust the control y-positions by 0.5pt and have
1087 // them appear 0.5pt lower (they are still drawn at their original locations),
1088 // so instead shave off 1pt from the bottom of the toolbar. Note that there's
1089 // an offsetting change in -[BookmarkBarController preferredHeight] to
1090 // maintain the proper spacing between bookmark icons and toolbar items. See
1091 // https://crbug.com/326245 .
1092 const CGFloat kLineWidth = [[self view] cr_lineWidth];
1093 const BOOL kIsRetina = (kLineWidth < 1);
1094 BOOL reduceHeight = NO;
1095
1096 // Only adjust the height if Retina and not Material Design.
1097 reduceHeight = kIsRetina && !kIsModeMaterial;
1098
1099 return reduceHeight ? kBaseToolbarHeightNormal - 1
1100 : kBaseToolbarHeightNormal;
1101 } 995 }
1102 996
1103 - (CGFloat)desiredHeightForCompression:(CGFloat)compressByHeight { 997 - (CGFloat)desiredHeightForCompression:(CGFloat)compressByHeight {
1104 // With no toolbar, just ignore the compression. 998 // With no toolbar, just ignore the compression.
1105 if (!hasToolbar_) 999 if (!hasToolbar_)
1106 return NSHeight([locationBar_ frame]); 1000 return NSHeight([locationBar_ frame]);
1107 1001
1108 return [self baseToolbarHeight] - compressByHeight; 1002 return [self baseToolbarHeight] - compressByHeight;
1109 } 1003 }
1110 1004
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 - (void)hideDropURLsIndicatorInView:(NSView*)view { 1087 - (void)hideDropURLsIndicatorInView:(NSView*)view {
1194 // Do nothing. 1088 // Do nothing.
1195 } 1089 }
1196 1090
1197 // (URLDropTargetController protocol) 1091 // (URLDropTargetController protocol)
1198 - (BOOL)isUnsupportedDropData:(id<NSDraggingInfo>)info { 1092 - (BOOL)isUnsupportedDropData:(id<NSDraggingInfo>)info {
1199 return drag_util::IsUnsupportedDropData(profile_, info); 1093 return drag_util::IsUnsupportedDropData(profile_, info);
1200 } 1094 }
1201 1095
1202 @end 1096 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/toolbar/toolbar_button_cocoa.mm ('k') | chrome/browser/ui/cocoa/toolbar/toolbar_view_cocoa.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698