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

Side by Side Diff: chrome/browser/ui/cocoa/tabs/tab_window_controller.mm

Issue 423013005: Revert of mac: Fix tab dragging visual bug in Yosemite. (reland 2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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/tabs/tab_window_controller.h" 5 #import "chrome/browser/ui/cocoa/tabs/tab_window_controller.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #import "chrome/browser/ui/cocoa/fast_resize_view.h" 8 #import "chrome/browser/ui/cocoa/fast_resize_view.h"
9 #import "chrome/browser/ui/cocoa/framed_browser_window.h" 9 #import "chrome/browser/ui/cocoa/framed_browser_window.h"
10 #import "chrome/browser/ui/cocoa/tabs/tab_strip_view.h" 10 #import "chrome/browser/ui/cocoa/tabs/tab_strip_view.h"
(...skipping 29 matching lines...) Expand all
40 themeImagePositionForAlignment:alignment]; 40 themeImagePositionForAlignment:alignment];
41 } 41 }
42 return NSZeroPoint; 42 return NSZeroPoint;
43 } 43 }
44 44
45 @end 45 @end
46 46
47 @implementation TabWindowController 47 @implementation TabWindowController
48 48
49 - (id)initTabWindowControllerWithTabStrip:(BOOL)hasTabStrip { 49 - (id)initTabWindowControllerWithTabStrip:(BOOL)hasTabStrip {
50 const CGFloat kDefaultWidth = 750; 50 NSRect contentRect = NSMakeRect(60, 229, 750, 600);
51 const CGFloat kDefaultHeight = 600;
52
53 NSRect contentRect = NSMakeRect(60, 229, kDefaultWidth, kDefaultHeight);
54 base::scoped_nsobject<FramedBrowserWindow> window( 51 base::scoped_nsobject<FramedBrowserWindow> window(
55 [[FramedBrowserWindow alloc] initWithContentRect:contentRect 52 [[FramedBrowserWindow alloc] initWithContentRect:contentRect
56 hasTabStrip:hasTabStrip]); 53 hasTabStrip:hasTabStrip]);
57 [window setReleasedWhenClosed:YES]; 54 [window setReleasedWhenClosed:YES];
58 [window setAutorecalculatesKeyViewLoop:YES]; 55 [window setAutorecalculatesKeyViewLoop:YES];
59 56
60 if ((self = [super initWithWindow:window])) { 57 if ((self = [super initWithWindow:window])) {
61 [[self window] setDelegate:self]; 58 [[self window] setDelegate:self];
62 59
63 chromeContentView_.reset([[NSView alloc] 60 tabContentArea_.reset([[FastResizeView alloc] initWithFrame:
64 initWithFrame:NSMakeRect(0, 0, kDefaultWidth, kDefaultHeight)]); 61 NSMakeRect(0, 0, 750, 600)]);
65 [chromeContentView_
66 setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
67 [[[self window] contentView] addSubview:chromeContentView_];
68
69 tabContentArea_.reset(
70 [[FastResizeView alloc] initWithFrame:[chromeContentView_ bounds]]);
71 [tabContentArea_ setAutoresizingMask:NSViewWidthSizable | 62 [tabContentArea_ setAutoresizingMask:NSViewWidthSizable |
72 NSViewHeightSizable]; 63 NSViewHeightSizable];
73 [chromeContentView_ addSubview:tabContentArea_]; 64 [[[self window] contentView] addSubview:tabContentArea_];
74 65
75 tabStripView_.reset([[TabStripView alloc] 66 tabStripView_.reset([[TabStripView alloc] initWithFrame:
76 initWithFrame:NSMakeRect(0, 0, kDefaultWidth, 37)]); 67 NSMakeRect(0, 0, 750, 37)]);
77 [tabStripView_ setAutoresizingMask:NSViewWidthSizable | 68 [tabStripView_ setAutoresizingMask:NSViewWidthSizable |
78 NSViewMinYMargin]; 69 NSViewMinYMargin];
79 if (hasTabStrip) 70 if (hasTabStrip)
80 [self addTabStripToWindow]; 71 [self addTabStripToWindow];
81 } 72 }
82 return self; 73 return self;
83 } 74 }
84 75
85 - (TabStripView*)tabStripView { 76 - (TabStripView*)tabStripView {
86 return tabStripView_; 77 return tabStripView_;
87 } 78 }
88 79
89 - (FastResizeView*)tabContentArea { 80 - (FastResizeView*)tabContentArea {
90 return tabContentArea_; 81 return tabContentArea_;
91 } 82 }
92 83
93 - (NSView*)chromeContentView {
94 return chromeContentView_;
95 }
96
97 // Add the top tab strop to the window, above the content box and add it to the 84 // Add the top tab strop to the window, above the content box and add it to the
98 // view hierarchy as a sibling of the content view so it can overlap with the 85 // view hierarchy as a sibling of the content view so it can overlap with the
99 // window frame. 86 // window frame.
100 - (void)addTabStripToWindow { 87 - (void)addTabStripToWindow {
101 // The frame doesn't matter. This class relies on subclasses to do tab strip 88 // The frame doesn't matter. This class relies on subclasses to do tab strip
102 // layout. 89 // layout.
103 NSView* contentParent = [[self window] cr_windowView]; 90 NSView* contentParent = [[self window] cr_windowView];
104 [contentParent addSubview:tabStripView_]; 91 [contentParent addSubview:tabStripView_];
105 } 92 }
106 93
(...skipping 26 matching lines...) Expand all
133 overlayWindow_ = [[TabWindowOverlayWindow alloc] 120 overlayWindow_ = [[TabWindowOverlayWindow alloc]
134 initWithContentRect:[window frame] 121 initWithContentRect:[window frame]
135 styleMask:NSBorderlessWindowMask 122 styleMask:NSBorderlessWindowMask
136 backing:NSBackingStoreBuffered 123 backing:NSBackingStoreBuffered
137 defer:YES]; 124 defer:YES];
138 [overlayWindow_ setTitle:@"overlay"]; 125 [overlayWindow_ setTitle:@"overlay"];
139 [overlayWindow_ setBackgroundColor:[NSColor clearColor]]; 126 [overlayWindow_ setBackgroundColor:[NSColor clearColor]];
140 [overlayWindow_ setOpaque:NO]; 127 [overlayWindow_ setOpaque:NO];
141 [overlayWindow_ setDelegate:self]; 128 [overlayWindow_ setDelegate:self];
142 129
143 originalContentView_ = self.chromeContentView; 130 originalContentView_ = [window contentView];
144 [window addChildWindow:overlayWindow_ ordered:NSWindowAbove]; 131 [window addChildWindow:overlayWindow_ ordered:NSWindowAbove];
145 132
146 // Explicitly set the responder to be nil here (for restoring later). 133 // Explicitly set the responder to be nil here (for restoring later).
147 // If the first responder were to be left non-nil here then 134 // If the first responder were to be left non-nil here then
148 // [RenderWidgethostViewCocoa resignFirstResponder] would be called, 135 // [RenderWidgethostViewCocoa resignFirstResponder] would be called,
149 // followed by RenderWidgetHost::Blur(), which would result in an unexpected 136 // followed by RenderWidgetHost::Blur(), which would result in an unexpected
150 // loss of focus. 137 // loss of focus.
151 focusBeforeOverlay_.reset([[FocusTracker alloc] initWithWindow:window]); 138 focusBeforeOverlay_.reset([[FocusTracker alloc] initWithWindow:window]);
152 [window makeFirstResponder:nil]; 139 [window makeFirstResponder:nil];
153 140
154 // Move the original window's tab strip view and content view to the overlay 141 // Move the original window's tab strip view and content view to the overlay
155 // window. The content view is added as a subview of the overlay window's 142 // window. The content view is added as a subview of the overlay window's
156 // content view (rather than using setContentView:) because the overlay 143 // content view (rather than using setContentView:) because the overlay
157 // window has a different content size (due to it being borderless). 144 // window has a different content size (due to it being borderless).
158 [[overlayWindow_ cr_windowView] addSubview:[self tabStripView]]; 145 [[overlayWindow_ cr_windowView] addSubview:[self tabStripView]];
159 [[overlayWindow_ contentView] addSubview:originalContentView_]; 146 [[overlayWindow_ contentView] addSubview:originalContentView_];
160 147
161 [overlayWindow_ orderFront:nil]; 148 [overlayWindow_ orderFront:nil];
162 } else if (!useOverlay && overlayWindow_) { 149 } else if (!useOverlay && overlayWindow_) {
163 DCHECK(originalContentView_); 150 DCHECK(originalContentView_);
164 151
165 // Return the original window's tab strip view and content view to their 152 // Return the original window's tab strip view and content view to their
166 // places. The TabStripView always needs to be in front of the window's 153 // places. The TabStripView always needs to be in front of the window's
167 // content view and therefore it should always be added after the content 154 // content view and therefore it should always be added after the content
168 // view is set. 155 // view is set.
169 [[window contentView] addSubview:originalContentView_ 156 [window setContentView:originalContentView_];
170 positioned:NSWindowBelow
171 relativeTo:nil];
172 originalContentView_.frame = [[window contentView] bounds];
173 [[window cr_windowView] addSubview:[self tabStripView]]; 157 [[window cr_windowView] addSubview:[self tabStripView]];
174 [[window cr_windowView] updateTrackingAreas]; 158 [[window cr_windowView] updateTrackingAreas];
175 159
176 [focusBeforeOverlay_ restoreFocusInWindow:window]; 160 [focusBeforeOverlay_ restoreFocusInWindow:window];
177 focusBeforeOverlay_.reset(); 161 focusBeforeOverlay_.reset();
178 162
179 [window display]; 163 [window display];
180 [window removeChildWindow:overlayWindow_]; 164 [window removeChildWindow:overlayWindow_];
181 165
182 [overlayWindow_ orderOut:nil]; 166 [overlayWindow_ orderOut:nil];
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 closeDeferred_ = YES; 292 closeDeferred_ = YES;
309 } 293 }
310 294
311 // Called when the size of the window content area has changed. Override to 295 // Called when the size of the window content area has changed. Override to
312 // position specific views. Base class implementation does nothing. 296 // position specific views. Base class implementation does nothing.
313 - (void)layoutSubviews { 297 - (void)layoutSubviews {
314 NOTIMPLEMENTED(); 298 NOTIMPLEMENTED();
315 } 299 }
316 300
317 @end 301 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/tabs/tab_window_controller.h ('k') | chrome/browser/ui/cocoa/version_independent_window.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698