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

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

Issue 65011: Flatten down to a single toolbar per window, significantly simplifying the ta... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years, 8 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/cocoa/tab_window_controller.h" 5 #import "chrome/browser/cocoa/tab_window_controller.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #import "chrome/browser/cocoa/tab_strip_view.h" 8 #import "chrome/browser/cocoa/tab_strip_view.h"
9 9
10 @interface TabWindowController(PRIVATE) 10 @interface TabWindowController(PRIVATE)
11 - (void)setUseOverlay:(BOOL)useOverlay; 11 - (void)setUseOverlay:(BOOL)useOverlay;
12 @end 12 @end
13 13
14 @implementation TabWindowController 14 @implementation TabWindowController
15 @synthesize tabStripView = tabStripView_; 15 @synthesize tabStripView = tabStripView_;
16 @synthesize tabContentArea = tabContentArea_;
16 17
17 - (void)windowDidLoad { 18 - (void)windowDidLoad {
18 // Place the tab bar above the content box and add it to the view hierarchy 19 // Place the tab bar above the content box and add it to the view hierarchy
19 // as a sibling of the content view so it can overlap with the window frame. 20 // as a sibling of the content view so it can overlap with the window frame.
20 NSRect tabFrame = [contentBox_ frame]; 21 NSRect tabFrame = [tabContentArea_ frame];
TVL 2009/04/09 15:53:00 you could DCheck the class requirements on tabCont
pink (ping after 24hrs) 2009/04/09 16:00:48 do what, though? check that it's not an NSBox? tha
21 tabFrame.origin = NSMakePoint(0, NSMaxY(tabFrame)); 22 tabFrame.origin = NSMakePoint(0, NSMaxY(tabFrame));
22 tabFrame.size.height = NSHeight([tabStripView_ frame]); 23 tabFrame.size.height = NSHeight([tabStripView_ frame]);
23 [tabStripView_ setFrame:tabFrame]; 24 [tabStripView_ setFrame:tabFrame];
24 [[[[self window] contentView] superview] addSubview:tabStripView_]; 25 [[[[self window] contentView] superview] addSubview:tabStripView_];
25
26 // tab switching will destroy the content area, so nil this out to ensure
27 // that nobody tries to use it.
28 contentBox_ = nil;
29 } 26 }
30 27
31 - (void)removeOverlay { 28 - (void)removeOverlay {
32 [self setUseOverlay:NO]; 29 [self setUseOverlay:NO];
33 } 30 }
34 31
35 - (void)removeOverlayAfterDelay:(NSTimeInterval)delay { 32 - (void)removeOverlayAfterDelay:(NSTimeInterval)delay {
36 [NSObject cancelPreviousPerformRequestsWithTarget:self 33 [NSObject cancelPreviousPerformRequestsWithTarget:self
37 selector:@selector(removeOverlay) 34 selector:@selector(removeOverlay)
38 object:nil]; 35 object:nil];
39 [self performSelector:@selector(removeOverlay) 36 [self performSelector:@selector(removeOverlay)
40 withObject:nil 37 withObject:nil
41 afterDelay:delay]; 38 afterDelay:delay];
42 } 39 }
43 40
44 - (void)showOverlay { 41 - (void)showOverlay {
45 [self setUseOverlay:YES]; 42 [self setUseOverlay:YES];
46 } 43 }
47 44
45 - (NSArray*)viewsToMoveToOverlay {
46 return [NSArray arrayWithObject:[self tabStripView]];
47 }
48
49 - (void)moveViewsBetweenWindowAndOverlay:(BOOL)useOverlay {
50 NSArray* viewsToMove = [self viewsToMoveToOverlay];
51 for (NSView* view in viewsToMove) {
52 // if |useOverlay| is true, we're moving views into the overlay's content
53 // area. If false, we're moving out of the overlay back into the window's
54 // content.
55 NSView* moveTo = useOverlay ?
56 [overlayWindow_ contentView] : [cachedContentView_ superview];
TVL 2009/04/09 15:53:00 move this outside the loop, it doesn't need loop s
pink (ping after 24hrs) 2009/04/09 16:00:48 duh. changed this around at the last minute and mi
57 [moveTo addSubview:view];
58 }
59 }
60
48 // If |useOverlay| is YES, creates a new overlay window and puts the tab strip 61 // If |useOverlay| is YES, creates a new overlay window and puts the tab strip
49 // and the content area inside of it. This allows it to have a different opacity 62 // and the content area inside of it. This allows it to have a different opacity
50 // from the title bar. If NO, returns everything to the previous state and 63 // from the title bar. If NO, returns everything to the previous state and
51 // destroys the overlay window until it's needed again. The tab strip and window 64 // destroys the overlay window until it's needed again. The tab strip and window
52 // contents are returned to the original window. 65 // contents are returned to the original window.
53 - (void)setUseOverlay:(BOOL)useOverlay { 66 - (void)setUseOverlay:(BOOL)useOverlay {
54 [NSObject cancelPreviousPerformRequestsWithTarget:self 67 [NSObject cancelPreviousPerformRequestsWithTarget:self
55 selector:@selector(removeOverlay) 68 selector:@selector(removeOverlay)
56 object:nil]; 69 object:nil];
57 if (useOverlay && !overlayWindow_) { 70 if (useOverlay && !overlayWindow_) {
58 DCHECK(!cachedContentView_); 71 DCHECK(!cachedContentView_);
59 overlayWindow_ = [[NSPanel alloc] initWithContentRect:[[self window] frame] 72 overlayWindow_ = [[NSPanel alloc] initWithContentRect:[[self window] frame]
60 styleMask:NSBorderlessWindowMask 73 styleMask:NSBorderlessWindowMask
61 backing:NSBackingStoreBuffered 74 backing:NSBackingStoreBuffered
62 defer:YES]; 75 defer:YES];
63 [overlayWindow_ setTitle:@"overlay"]; 76 [overlayWindow_ setTitle:@"overlay"];
64 [overlayWindow_ setBackgroundColor:[NSColor clearColor]]; 77 [overlayWindow_ setBackgroundColor:[NSColor clearColor]];
65 [overlayWindow_ setOpaque:NO]; 78 [overlayWindow_ setOpaque:NO];
66 NSView *contentView = [overlayWindow_ contentView]; 79 NSView *contentView = [overlayWindow_ contentView];
67 [contentView addSubview:[self tabStripView]]; 80 [contentView addSubview:[self tabStripView]];
68 cachedContentView_ = [[self window] contentView]; 81 cachedContentView_ = [[self window] contentView];
69 [contentView addSubview:cachedContentView_]; 82 [self moveViewsBetweenWindowAndOverlay:useOverlay];
70 [overlayWindow_ setHasShadow:YES]; 83 [overlayWindow_ setHasShadow:YES];
71 [[self window] addChildWindow:overlayWindow_ ordered:NSWindowAbove]; 84 [[self window] addChildWindow:overlayWindow_ ordered:NSWindowAbove];
72 [overlayWindow_ orderFront:nil]; 85 [overlayWindow_ orderFront:nil];
73 [[self window] setHasShadow:NO]; 86 [[self window] setHasShadow:NO];
74 } else if (!useOverlay && overlayWindow_) { 87 } else if (!useOverlay && overlayWindow_) {
75 DCHECK(cachedContentView_); 88 DCHECK(cachedContentView_);
76 [[self window] setHasShadow:YES]; 89 [[self window] setHasShadow:YES];
77 [[self window] setContentView:cachedContentView_]; 90 [[self window] setContentView:cachedContentView_];
78 [[cachedContentView_ superview] addSubview:[self tabStripView]]; 91 [self moveViewsBetweenWindowAndOverlay:useOverlay];
79 [[self window] makeFirstResponder:cachedContentView_]; 92 [[self window] makeFirstResponder:cachedContentView_];
80 [[self window] display]; 93 [[self window] display];
81 [[self window] removeChildWindow:overlayWindow_]; 94 [[self window] removeChildWindow:overlayWindow_];
82 [overlayWindow_ orderOut:nil]; 95 [overlayWindow_ orderOut:nil];
83 [overlayWindow_ release]; 96 [overlayWindow_ release];
84 overlayWindow_ = nil; 97 overlayWindow_ = nil;
85 cachedContentView_ = nil; 98 cachedContentView_ = nil;
86 } 99 }
87 } 100 }
88 101
(...skipping 22 matching lines...) Expand all
111 NOTIMPLEMENTED(); 124 NOTIMPLEMENTED();
112 } 125 }
113 126
114 - (NSInteger)numberOfTabs { 127 - (NSInteger)numberOfTabs {
115 // subclass must implement 128 // subclass must implement
116 NOTIMPLEMENTED(); 129 NOTIMPLEMENTED();
117 return 0; 130 return 0;
118 } 131 }
119 132
120 @end 133 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698