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

Unified Diff: chrome/browser/ui/cocoa/tab_window_controller.mm

Issue 6362007: [Mac] Organize all tab/tab strip files into chrome/browser/ui/cocoa/tabs/.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/cocoa/tab_window_controller.h ('k') | chrome/browser/ui/cocoa/tabpose_window.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/cocoa/tab_window_controller.mm
===================================================================
--- chrome/browser/ui/cocoa/tab_window_controller.mm (revision 71805)
+++ chrome/browser/ui/cocoa/tab_window_controller.mm (working copy)
@@ -1,356 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "chrome/browser/ui/cocoa/tab_window_controller.h"
-
-#include "app/theme_provider.h"
-#include "base/logging.h"
-#import "chrome/browser/ui/cocoa/focus_tracker.h"
-#import "chrome/browser/ui/cocoa/tab_strip_view.h"
-#import "chrome/browser/ui/cocoa/themed_window.h"
-
-@interface TabWindowController(PRIVATE)
-- (void)setUseOverlay:(BOOL)useOverlay;
-@end
-
-@interface TabWindowOverlayWindow : NSWindow
-@end
-
-@implementation TabWindowOverlayWindow
-
-- (ThemeProvider*)themeProvider {
- if ([self parentWindow])
- return [[[self parentWindow] windowController] themeProvider];
- return NULL;
-}
-
-- (ThemedWindowStyle)themedWindowStyle {
- if ([self parentWindow])
- return [[[self parentWindow] windowController] themedWindowStyle];
- return NO;
-}
-
-- (NSPoint)themePatternPhase {
- if ([self parentWindow])
- return [[[self parentWindow] windowController] themePatternPhase];
- return NSZeroPoint;
-}
-
-@end
-
-@implementation TabWindowController
-@synthesize tabContentArea = tabContentArea_;
-
-- (id)initWithWindow:(NSWindow*)window {
- if ((self = [super initWithWindow:window]) != nil) {
- lockedTabs_.reset([[NSMutableSet alloc] initWithCapacity:10]);
- }
- return self;
-}
-
-// Add the side tab strip to the left side of the window's content area,
-// making it fill the full height of the content area.
-- (void)addSideTabStripToWindow {
- NSView* contentView = [[self window] contentView];
- NSRect contentFrame = [contentView frame];
- NSRect sideStripFrame =
- NSMakeRect(0, 0,
- NSWidth([sideTabStripView_ frame]),
- NSHeight(contentFrame));
- [sideTabStripView_ setFrame:sideStripFrame];
- [contentView addSubview:sideTabStripView_];
-}
-
-// Add the top tab strop to the window, above the content box and add it to the
-// view hierarchy as a sibling of the content view so it can overlap with the
-// window frame.
-- (void)addTopTabStripToWindow {
- NSRect contentFrame = [tabContentArea_ frame];
- NSRect tabFrame =
- NSMakeRect(0, NSMaxY(contentFrame),
- NSWidth(contentFrame),
- NSHeight([topTabStripView_ frame]));
- [topTabStripView_ setFrame:tabFrame];
- NSView* contentParent = [[[self window] contentView] superview];
- [contentParent addSubview:topTabStripView_];
-}
-
-- (void)windowDidLoad {
- // Cache the difference in height between the window content area and the
- // tab content area.
- NSRect tabFrame = [tabContentArea_ frame];
- NSRect contentFrame = [[[self window] contentView] frame];
- contentAreaHeightDelta_ = NSHeight(contentFrame) - NSHeight(tabFrame);
-
- if ([self hasTabStrip]) {
- if ([self useVerticalTabs]) {
- // No top tabstrip so remove the tabContentArea offset.
- tabFrame.size.height = contentFrame.size.height;
- [tabContentArea_ setFrame:tabFrame];
- [self addSideTabStripToWindow];
- } else {
- [self addTopTabStripToWindow];
- }
- } else {
- // No top tabstrip so remove the tabContentArea offset.
- tabFrame.size.height = contentFrame.size.height;
- [tabContentArea_ setFrame:tabFrame];
- }
-}
-
-// Toggles from one display mode of the tab strip to another. Will automatically
-// call -layoutSubviews to reposition other content.
-- (void)toggleTabStripDisplayMode {
- // Adjust the size of the tab contents to either use more or less space,
- // depending on the direction of the toggle. This needs to be done prior to
- // adding back in the top tab strip as its position is based off the MaxY
- // of the tab content area.
- BOOL useVertical = [self useVerticalTabs];
- NSRect tabContentsFrame = [tabContentArea_ frame];
- tabContentsFrame.size.height += useVertical ?
- contentAreaHeightDelta_ : -contentAreaHeightDelta_;
- [tabContentArea_ setFrame:tabContentsFrame];
-
- if (useVertical) {
- // Remove the top tab strip and add the sidebar in.
- [topTabStripView_ removeFromSuperview];
- [self addSideTabStripToWindow];
- } else {
- // Remove the side tab strip and add the top tab strip as a sibling of the
- // window's content area.
- [sideTabStripView_ removeFromSuperview];
- NSRect tabContentsFrame = [tabContentArea_ frame];
- tabContentsFrame.size.height -= contentAreaHeightDelta_;
- [tabContentArea_ setFrame:tabContentsFrame];
- [self addTopTabStripToWindow];
- }
-
- [self layoutSubviews];
-}
-
-// Return the appropriate tab strip based on whether or not side tabs are
-// enabled.
-- (TabStripView*)tabStripView {
- if ([self useVerticalTabs])
- return sideTabStripView_;
- return topTabStripView_;
-}
-
-- (void)removeOverlay {
- [self setUseOverlay:NO];
- if (closeDeferred_) {
- // See comment in BrowserWindowCocoa::Close() about orderOut:.
- [[self window] orderOut:self];
- [[self window] performClose:self]; // Autoreleases the controller.
- }
-}
-
-- (void)showOverlay {
- [self setUseOverlay:YES];
-}
-
-// if |useOverlay| is true, we're moving views into the overlay's content
-// area. If false, we're moving out of the overlay back into the window's
-// content.
-- (void)moveViewsBetweenWindowAndOverlay:(BOOL)useOverlay {
- if (useOverlay) {
- [[[overlayWindow_ contentView] superview] addSubview:[self tabStripView]];
- // Add the original window's content view as a subview of the overlay
- // window's content view. We cannot simply use setContentView: here because
- // the overlay window has a different content size (due to it being
- // borderless).
- [[overlayWindow_ contentView] addSubview:cachedContentView_];
- } else {
- [[self window] setContentView:cachedContentView_];
- // The TabStripView always needs to be in front of the window's content
- // view and therefore it should always be added after the content view is
- // set.
- [[[[self window] contentView] superview] addSubview:[self tabStripView]];
- [[[[self window] contentView] superview] updateTrackingAreas];
- }
-}
-
-// If |useOverlay| is YES, creates a new overlay window and puts the tab strip
-// and the content area inside of it. This allows it to have a different opacity
-// from the title bar. If NO, returns everything to the previous state and
-// destroys the overlay window until it's needed again. The tab strip and window
-// contents are returned to the original window.
-- (void)setUseOverlay:(BOOL)useOverlay {
- [NSObject cancelPreviousPerformRequestsWithTarget:self
- selector:@selector(removeOverlay)
- object:nil];
- NSWindow* window = [self window];
- if (useOverlay && !overlayWindow_) {
- DCHECK(!cachedContentView_);
- overlayWindow_ = [[TabWindowOverlayWindow alloc]
- initWithContentRect:[window frame]
- styleMask:NSBorderlessWindowMask
- backing:NSBackingStoreBuffered
- defer:YES];
- [overlayWindow_ setTitle:@"overlay"];
- [overlayWindow_ setBackgroundColor:[NSColor clearColor]];
- [overlayWindow_ setOpaque:NO];
- [overlayWindow_ setDelegate:self];
- cachedContentView_ = [window contentView];
- [window addChildWindow:overlayWindow_ ordered:NSWindowAbove];
- // Sets explictly nil to the responder and then restores it.
- // Leaving the first responder non-null here
- // causes [RenderWidgethostViewCocoa resignFirstResponder] and
- // following RenderWidgetHost::Blur(), which results unexpected
- // focus lost.
- focusBeforeOverlay_.reset([[FocusTracker alloc] initWithWindow:window]);
- [window makeFirstResponder:nil];
- [self moveViewsBetweenWindowAndOverlay:useOverlay];
- [overlayWindow_ orderFront:nil];
- } else if (!useOverlay && overlayWindow_) {
- DCHECK(cachedContentView_);
- [window setContentView:cachedContentView_];
- [self moveViewsBetweenWindowAndOverlay:useOverlay];
- [focusBeforeOverlay_ restoreFocusInWindow:window];
- focusBeforeOverlay_.reset(nil);
- [window display];
- [window removeChildWindow:overlayWindow_];
- [overlayWindow_ orderOut:nil];
- [overlayWindow_ release];
- overlayWindow_ = nil;
- cachedContentView_ = nil;
- } else {
- NOTREACHED();
- }
-}
-
-- (NSWindow*)overlayWindow {
- return overlayWindow_;
-}
-
-- (BOOL)shouldConstrainFrameRect {
- // If we currently have an overlay window, do not attempt to change the
- // window's size, as our overlay window doesn't know how to resize properly.
- return overlayWindow_ == nil;
-}
-
-- (BOOL)canReceiveFrom:(TabWindowController*)source {
- // subclass must implement
- NOTIMPLEMENTED();
- return NO;
-}
-
-- (void)moveTabView:(NSView*)view
- fromController:(TabWindowController*)dragController {
- NOTIMPLEMENTED();
-}
-
-- (NSView*)selectedTabView {
- NOTIMPLEMENTED();
- return nil;
-}
-
-- (void)layoutTabs {
- // subclass must implement
- NOTIMPLEMENTED();
-}
-
-- (TabWindowController*)detachTabToNewWindow:(TabView*)tabView {
- // subclass must implement
- NOTIMPLEMENTED();
- return NULL;
-}
-
-- (void)insertPlaceholderForTab:(TabView*)tab
- frame:(NSRect)frame
- yStretchiness:(CGFloat)yStretchiness {
- [self showNewTabButton:NO];
-}
-
-- (void)removePlaceholder {
- [self showNewTabButton:YES];
-}
-
-- (BOOL)isDragSessionActive {
- NOTIMPLEMENTED();
- return NO;
-}
-
-- (BOOL)tabDraggingAllowed {
- return YES;
-}
-
-- (BOOL)tabTearingAllowed {
- return YES;
-}
-
-- (BOOL)windowMovementAllowed {
- return YES;
-}
-
-- (BOOL)isTabFullyVisible:(TabView*)tab {
- // Subclasses should implement this, but it's not necessary.
- return YES;
-}
-
-- (void)showNewTabButton:(BOOL)show {
- // subclass must implement
- NOTIMPLEMENTED();
-}
-
-- (void)detachTabView:(NSView*)view {
- // subclass must implement
- NOTIMPLEMENTED();
-}
-
-- (NSInteger)numberOfTabs {
- // subclass must implement
- NOTIMPLEMENTED();
- return 0;
-}
-
-- (BOOL)hasLiveTabs {
- // subclass must implement
- NOTIMPLEMENTED();
- return NO;
-}
-
-- (NSString*)selectedTabTitle {
- // subclass must implement
- NOTIMPLEMENTED();
- return @"";
-}
-
-- (BOOL)hasTabStrip {
- // Subclasses should implement this.
- NOTIMPLEMENTED();
- return YES;
-}
-
-- (BOOL)useVerticalTabs {
- // Subclasses should implement this.
- NOTIMPLEMENTED();
- return NO;
-}
-
-- (BOOL)isTabDraggable:(NSView*)tabView {
- return ![lockedTabs_ containsObject:tabView];
-}
-
-- (void)setTab:(NSView*)tabView isDraggable:(BOOL)draggable {
- if (draggable)
- [lockedTabs_ removeObject:tabView];
- else
- [lockedTabs_ addObject:tabView];
-}
-
-// Tell the window that it needs to call performClose: as soon as the current
-// drag is complete. This prevents a window (and its overlay) from going away
-// during a drag.
-- (void)deferPerformClose {
- closeDeferred_ = YES;
-}
-
-// Called when the size of the window content area has changed. Override to
-// position specific views. Base class implementation does nothing.
-- (void)layoutSubviews {
- NOTIMPLEMENTED();
-}
-
-@end
« no previous file with comments | « chrome/browser/ui/cocoa/tab_window_controller.h ('k') | chrome/browser/ui/cocoa/tabpose_window.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698