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

Side by Side Diff: chrome/browser/ui/cocoa/browser_window_controller_private.mm

Issue 139343016: [Mac] Fix new avatar button bugs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/cocoa/browser/avatar_icon_controller.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/browser_window_controller_private.h" 5 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #import "base/mac/scoped_nsobject.h" 10 #import "base/mac/scoped_nsobject.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 CGFloat tabStripHeight = NSHeight([tabStripView frame]); 312 CGFloat tabStripHeight = NSHeight([tabStripView frame]);
313 maxY -= tabStripHeight; 313 maxY -= tabStripHeight;
314 [tabStripView setFrame:NSMakeRect(0, maxY, width, tabStripHeight)]; 314 [tabStripView setFrame:NSMakeRect(0, maxY, width, tabStripHeight)];
315 315
316 // Set left indentation based on fullscreen mode status. 316 // Set left indentation based on fullscreen mode status.
317 [tabStripController_ setLeftIndentForControls:(fullscreen ? 0 : 317 [tabStripController_ setLeftIndentForControls:(fullscreen ? 0 :
318 [[tabStripController_ class] defaultLeftIndentForControls])]; 318 [[tabStripController_ class] defaultLeftIndentForControls])];
319 319
320 // Lay out the icognito/avatar badge because calculating the indentation on 320 // Lay out the icognito/avatar badge because calculating the indentation on
321 // the right depends on it. 321 // the right depends on it.
322 NSView* avatarButton = [avatarButtonController_ view];
322 if ([self shouldShowAvatar]) { 323 if ([self shouldShowAvatar]) {
323 NSView* avatarButton = [avatarButtonController_ view];
324 CGFloat badgeXOffset = -kAvatarRightOffset; 324 CGFloat badgeXOffset = -kAvatarRightOffset;
325 CGFloat badgeYOffset = 0; 325 CGFloat badgeYOffset = 0;
326 CGFloat buttonHeight; 326 CGFloat buttonHeight = NSHeight([avatarButton frame]);
327 327
328 if ([self shouldUseNewAvatarButton]) { 328 if ([self shouldUseNewAvatarButton]) {
329 // The fullscreen icon is displayed to the right of the avatar button. 329 // The fullscreen icon is displayed to the right of the avatar button.
330 if (![self isFullscreen]) 330 if (![self isFullscreen])
331 badgeXOffset -= kFullscreenIconWidth; 331 badgeXOffset -= kFullscreenIconWidth;
332
333 // Center the button vertically on the tabstrip. 332 // Center the button vertically on the tabstrip.
334 buttonHeight = NSHeight([avatarButton frame]);
335 badgeYOffset = (tabStripHeight - buttonHeight) / 2; 333 badgeYOffset = (tabStripHeight - buttonHeight) / 2;
336 } else { 334 } else {
337 buttonHeight = static_cast<CGFloat>(profiles::kAvatarIconHeight);
338 // Actually place the badge *above* |maxY|, by +2 to miss the divider. 335 // Actually place the badge *above* |maxY|, by +2 to miss the divider.
339 badgeYOffset = 2 * [[avatarButton superview] cr_lineWidth]; 336 badgeYOffset = 2 * [[avatarButton superview] cr_lineWidth];
337 }
340 338
341 }
342 [avatarButton setFrameSize:NSMakeSize(NSWidth([avatarButton frame]), 339 [avatarButton setFrameSize:NSMakeSize(NSWidth([avatarButton frame]),
343 std::min(buttonHeight, tabStripHeight))]; 340 std::min(buttonHeight, tabStripHeight))];
344 NSPoint origin = 341 NSPoint origin =
345 NSMakePoint(width - NSWidth([avatarButton frame]) + badgeXOffset, 342 NSMakePoint(width - NSWidth([avatarButton frame]) + badgeXOffset,
346 maxY + badgeYOffset); 343 maxY + badgeYOffset);
347 [avatarButton setFrameOrigin:origin]; 344 [avatarButton setFrameOrigin:origin];
348 [avatarButton setHidden:NO]; // Make sure it's shown. 345 [avatarButton setHidden:NO]; // Make sure it's shown.
349 } 346 }
350 347
351 // Calculate the right indentation. The default indentation built into the 348 // Calculate the right indentation. The default indentation built into the
352 // tabstrip leaves enough room for the fullscreen button or presentation mode 349 // tabstrip leaves enough room for the fullscreen button or presentation mode
353 // toggle button on Lion. On non-Lion systems, the right indent needs to be 350 // toggle button on Lion. On non-Lion systems, the right indent needs to be
354 // adjusted to make room for the new tab button when an avatar is present. 351 // adjusted to make room for the new tab button when an avatar is present.
355 CGFloat rightIndent = 0; 352 CGFloat rightIndent = 0;
356 if (base::mac::IsOSLionOrLater() && 353 if (base::mac::IsOSLionOrLater() &&
357 [[self window] isKindOfClass:[FramedBrowserWindow class]]) { 354 [[self window] isKindOfClass:[FramedBrowserWindow class]]) {
358 FramedBrowserWindow* window = 355 FramedBrowserWindow* window =
359 static_cast<FramedBrowserWindow*>([self window]); 356 static_cast<FramedBrowserWindow*>([self window]);
360 rightIndent += -[window fullScreenButtonOriginAdjustment].x; 357 rightIndent += -[window fullScreenButtonOriginAdjustment].x;
358
359 // The new avatar is wider than the default indentation, so we need to
360 // account for its width.
361 if ([self shouldUseNewAvatarButton])
362 rightIndent += NSWidth([avatarButton frame]) + kAvatarTabStripShrink;
361 } else if ([self shouldShowAvatar]) { 363 } else if ([self shouldShowAvatar]) {
362 rightIndent += kAvatarTabStripShrink; 364 rightIndent += kAvatarTabStripShrink +
363 if ([self shouldUseNewAvatarButton]) { 365 NSWidth([avatarButton frame]) + kAvatarRightOffset;
364 rightIndent += NSWidth([[avatarButtonController_ view] frame])
365 + kAvatarTabStripShrink;
366 } else {
367 NSButton* labelButton =
368 [static_cast<AvatarIconController*>(avatarButtonController_)
369 labelButtonView];
370 if (labelButton)
371 rightIndent += NSWidth([labelButton frame]) + kAvatarRightOffset;
372 }
373 } 366 }
374 [tabStripController_ setRightIndentForControls:rightIndent]; 367 [tabStripController_ setRightIndentForControls:rightIndent];
375 368
376 // Go ahead and layout the tabs. 369 // Go ahead and layout the tabs.
377 [tabStripController_ layoutTabsWithoutAnimation]; 370 [tabStripController_ layoutTabsWithoutAnimation];
378 371
379 return maxY; 372 return maxY;
380 } 373 }
381 374
382 - (CGFloat)layoutToolbarAtMinX:(CGFloat)minX 375 - (CGFloat)layoutToolbarAtMinX:(CGFloat)minX
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 } 1004 }
1012 } 1005 }
1013 1006
1014 - (void)updateInfoBarTipVisibility { 1007 - (void)updateInfoBarTipVisibility {
1015 // If there's no toolbar then hide the infobar tip. 1008 // If there's no toolbar then hide the infobar tip.
1016 [infoBarContainerController_ 1009 [infoBarContainerController_
1017 setShouldSuppressTopInfoBarTip:![self hasToolbar]]; 1010 setShouldSuppressTopInfoBarTip:![self hasToolbar]];
1018 } 1011 }
1019 1012
1020 @end // @implementation BrowserWindowController(Private) 1013 @end // @implementation BrowserWindowController(Private)
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/browser/avatar_icon_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698