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

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

Issue 566473002: mac: Make the avatar button layer backed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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/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 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 if (!barVisibilityUpdatesEnabled_ || [barVisibilityLocks_ count]) 976 if (!barVisibilityUpdatesEnabled_ || [barVisibilityLocks_ count])
977 return; 977 return;
978 [presentationModeController_ ensureOverlayHiddenWithAnimation:animation 978 [presentationModeController_ ensureOverlayHiddenWithAnimation:animation
979 delay:delay]; 979 delay:delay];
980 } 980 }
981 981
982 - (CGFloat)toolbarDividerOpacity { 982 - (CGFloat)toolbarDividerOpacity {
983 return [bookmarkBarController_ toolbarDividerOpacity]; 983 return [bookmarkBarController_ toolbarDividerOpacity];
984 } 984 }
985 985
986 - (void)reAddViewToSuperview:(NSView*)view {
987 // Hold a reference to the view so that it doesn't accidentally get
988 // dealloc'ed.
989 base::scoped_nsobject<NSView> reference([view retain]);
990
991 // Get the current position of the view
992 NSView* superview = [view superview];
Andre 2014/09/11 03:07:57 Can we skip this and do an early return if [superv
erikchen 2014/09/11 17:29:59 Sure.
993 NSArray* subviews = [superview subviews];
994 NSInteger index = [subviews indexOfObject:view];
995 NSView* siblingBelow = nil;
996 if (index > 0)
997 siblingBelow = [subviews objectAtIndex:index - 1];
998
999 // Remove the view.
1000 [view removeFromSuperview];
1001
1002 // Add it to the same position.
1003 if (siblingBelow) {
1004 [superview addSubview:view
1005 positioned:NSWindowAbove
1006 relativeTo:siblingBelow];
1007 } else {
1008 [superview addSubview:view
1009 positioned:NSWindowBelow
1010 relativeTo:nil];
1011 }
1012 }
1013
986 // TODO(erikchen): The implementation of this method is quite fragile. The 1014 // TODO(erikchen): The implementation of this method is quite fragile. The
987 // method cr_ensureSubview:... does not check that the subview is /directly/ 1015 // method cr_ensureSubview:... does not check that the subview is /directly/
988 // above/below the given view. e.g. There are 3 subviews: A, B, C, in that 1016 // above/below the given view. e.g. There are 3 subviews: A, B, C, in that
989 // order. The method cr_ensureSubview:A isPositioned:NSWindowBelow 1017 // order. The method cr_ensureSubview:A isPositioned:NSWindowBelow
990 // relativeTo:C will have no effect, even though the desired result may have 1018 // relativeTo:C will have no effect, even though the desired result may have
991 // been: B, A, C. Consider changing it? 1019 // been: B, A, C. Consider changing it?
992 - (void)updateSubviewZOrder:(BOOL)inAnyFullscreen { 1020 - (void)updateSubviewZOrder:(BOOL)inAnyFullscreen {
993 NSView* contentView = [[self window] contentView]; 1021 NSView* contentView = [[self window] contentView];
994 NSView* toolbarView = [toolbarController_ view]; 1022 NSView* toolbarView = [toolbarController_ view];
995 1023
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1068 // Repeatedly adding/removing the tabstrip from its superview during the 1096 // Repeatedly adding/removing the tabstrip from its superview during the
1069 // AppKit Fullscreen transition causes graphical glitches on 10.10. The 1097 // AppKit Fullscreen transition causes graphical glitches on 10.10. The
1070 // correct solution is to use the AppKit fullscreen transition APIs added 1098 // correct solution is to use the AppKit fullscreen transition APIs added
1071 // in 10.7+. 1099 // in 10.7+.
1072 // http://crbug.com/408791 1100 // http://crbug.com/408791
1073 if (!hasAdjustedTabStripWhileEnteringAppKitFullscreen_) { 1101 if (!hasAdjustedTabStripWhileEnteringAppKitFullscreen_) {
1074 // Disable implicit animations. 1102 // Disable implicit animations.
1075 [CATransaction begin]; 1103 [CATransaction begin];
1076 [CATransaction setDisableActions:YES]; 1104 [CATransaction setDisableActions:YES];
1077 1105
1078 // Get the current position of the tabStripView. 1106 [self reAddViewToSuperview:[self tabStripView]];
1079 NSView* superview = [[self tabStripView] superview]; 1107 [self reAddViewToSuperview:[avatarButtonController_ view]];
1080 NSArray* subviews = [superview subviews];
1081 NSInteger index = [subviews indexOfObject:[self tabStripView]];
1082 NSView* siblingBelow = nil;
1083 if (index > 0)
1084 siblingBelow = [subviews objectAtIndex:index - 1];
1085
1086 // Remove the tabStripView.
1087 [[self tabStripView] removeFromSuperview];
1088
1089 // Add it to the same position.
1090 if (siblingBelow) {
1091 [superview addSubview:[self tabStripView]
1092 positioned:NSWindowAbove
1093 relativeTo:siblingBelow];
1094 } else {
1095 [superview addSubview:[self tabStripView]
1096 positioned:NSWindowBelow
1097 relativeTo:nil];
1098 }
1099 1108
1100 [CATransaction commit]; 1109 [CATransaction commit];
1101 hasAdjustedTabStripWhileEnteringAppKitFullscreen_ = YES; 1110 hasAdjustedTabStripWhileEnteringAppKitFullscreen_ = YES;
1102 } 1111 }
1103 } else { 1112 } else {
1104 hasAdjustedTabStripWhileEnteringAppKitFullscreen_ = NO; 1113 hasAdjustedTabStripWhileEnteringAppKitFullscreen_ = NO;
1105 } 1114 }
1106 } 1115 }
1107 1116
1108 - (void)updateInfoBarTipVisibility { 1117 - (void)updateInfoBarTipVisibility {
(...skipping 29 matching lines...) Expand all
1138 1147
1139 - (void)exitAppKitFullscreen { 1148 - (void)exitAppKitFullscreen {
1140 DCHECK(base::mac::IsOSLionOrLater()); 1149 DCHECK(base::mac::IsOSLionOrLater());
1141 if (FramedBrowserWindow* framedBrowserWindow = 1150 if (FramedBrowserWindow* framedBrowserWindow =
1142 base::mac::ObjCCast<FramedBrowserWindow>([self window])) { 1151 base::mac::ObjCCast<FramedBrowserWindow>([self window])) {
1143 [framedBrowserWindow toggleSystemFullScreen]; 1152 [framedBrowserWindow toggleSystemFullScreen];
1144 } 1153 }
1145 } 1154 }
1146 1155
1147 @end // @implementation BrowserWindowController(Private) 1156 @end // @implementation BrowserWindowController(Private)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698