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

Unified Diff: chrome/browser/ui/cocoa/tab_strip_view.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_strip_view.h ('k') | chrome/browser/ui/cocoa/tab_strip_view_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/cocoa/tab_strip_view.mm
===================================================================
--- chrome/browser/ui/cocoa/tab_strip_view.mm (revision 71805)
+++ chrome/browser/ui/cocoa/tab_strip_view.mm (working copy)
@@ -1,211 +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_strip_view.h"
-
-#include "base/logging.h"
-#include "base/mac/mac_util.h"
-#include "chrome/browser/themes/browser_theme_provider.h"
-#import "chrome/browser/ui/cocoa/browser_window_controller.h"
-#import "chrome/browser/ui/cocoa/tab_strip_controller.h"
-#import "chrome/browser/ui/cocoa/view_id_util.h"
-
-@implementation TabStripView
-
-@synthesize newTabButton = newTabButton_;
-@synthesize dropArrowShown = dropArrowShown_;
-@synthesize dropArrowPosition = dropArrowPosition_;
-
-- (id)initWithFrame:(NSRect)frame {
- self = [super initWithFrame:frame];
- if (self) {
- // Set lastMouseUp_ = -1000.0 so that timestamp-lastMouseUp_ is big unless
- // lastMouseUp_ has been reset.
- lastMouseUp_ = -1000.0;
-
- // Register to be an URL drop target.
- dropHandler_.reset([[URLDropTargetHandler alloc] initWithView:self]);
- }
- return self;
-}
-
-// Draw bottom border (a dark border and light highlight). Each tab is
-// responsible for mimicking this bottom border, unless it's the selected
-// tab.
-- (void)drawBorder:(NSRect)bounds {
- NSRect borderRect, contentRect;
-
- borderRect = bounds;
- borderRect.origin.y = 1;
- borderRect.size.height = 1;
- [[NSColor colorWithCalibratedWhite:0.0 alpha:0.2] set];
- NSRectFillUsingOperation(borderRect, NSCompositeSourceOver);
- NSDivideRect(bounds, &borderRect, &contentRect, 1, NSMinYEdge);
-
- BrowserThemeProvider* themeProvider =
- static_cast<BrowserThemeProvider*>([[self window] themeProvider]);
- if (!themeProvider)
- return;
-
- NSColor* bezelColor = themeProvider->GetNSColor(
- themeProvider->UsingDefaultTheme() ?
- BrowserThemeProvider::COLOR_TOOLBAR_BEZEL :
- BrowserThemeProvider::COLOR_TOOLBAR, true);
- [bezelColor set];
- NSRectFill(borderRect);
- NSRectFillUsingOperation(borderRect, NSCompositeSourceOver);
-}
-
-- (void)drawRect:(NSRect)rect {
- NSRect boundsRect = [self bounds];
-
- [self drawBorder:boundsRect];
-
- // Draw drop-indicator arrow (if appropriate).
- // TODO(viettrungluu): this is all a stop-gap measure.
- if ([self dropArrowShown]) {
- // Programmer art: an arrow parametrized by many knobs. Note that the arrow
- // points downwards (so understand "width" and "height" accordingly).
-
- // How many (pixels) to inset on the top/bottom.
- const CGFloat kArrowTopInset = 1.5;
- const CGFloat kArrowBottomInset = 1;
-
- // What proportion of the vertical space is dedicated to the arrow tip,
- // i.e., (arrow tip height)/(amount of vertical space).
- const CGFloat kArrowTipProportion = 0.5;
-
- // This is a slope, i.e., (arrow tip height)/(0.5 * arrow tip width).
- const CGFloat kArrowTipSlope = 1.2;
-
- // What proportion of the arrow tip width is the stem, i.e., (stem
- // width)/(arrow tip width).
- const CGFloat kArrowStemProportion = 0.33;
-
- NSPoint arrowTipPos = [self dropArrowPosition];
- arrowTipPos.y += kArrowBottomInset; // Inset on the bottom.
-
- // Height we have to work with (insetting on the top).
- CGFloat availableHeight =
- NSMaxY(boundsRect) - arrowTipPos.y - kArrowTopInset;
- DCHECK(availableHeight >= 5);
-
- // Based on the knobs above, calculate actual dimensions which we'll need
- // for drawing.
- CGFloat arrowTipHeight = kArrowTipProportion * availableHeight;
- CGFloat arrowTipWidth = 2 * arrowTipHeight / kArrowTipSlope;
- CGFloat arrowStemHeight = availableHeight - arrowTipHeight;
- CGFloat arrowStemWidth = kArrowStemProportion * arrowTipWidth;
- CGFloat arrowStemInset = (arrowTipWidth - arrowStemWidth) / 2;
-
- // The line width is arbitrary, but our path really should be mitered.
- NSBezierPath* arrow = [NSBezierPath bezierPath];
- [arrow setLineJoinStyle:NSMiterLineJoinStyle];
- [arrow setLineWidth:1];
-
- // Define the arrow's shape! We start from the tip and go clockwise.
- [arrow moveToPoint:arrowTipPos];
- [arrow relativeLineToPoint:NSMakePoint(-arrowTipWidth / 2, arrowTipHeight)];
- [arrow relativeLineToPoint:NSMakePoint(arrowStemInset, 0)];
- [arrow relativeLineToPoint:NSMakePoint(0, arrowStemHeight)];
- [arrow relativeLineToPoint:NSMakePoint(arrowStemWidth, 0)];
- [arrow relativeLineToPoint:NSMakePoint(0, -arrowStemHeight)];
- [arrow relativeLineToPoint:NSMakePoint(arrowStemInset, 0)];
- [arrow closePath];
-
- // Draw and fill the arrow.
- [[NSColor colorWithCalibratedWhite:0 alpha:0.67] set];
- [arrow stroke];
- [[NSColor colorWithCalibratedWhite:1 alpha:0.67] setFill];
- [arrow fill];
- }
-}
-
-// YES if a double-click in the background of the tab strip minimizes the
-// window.
-- (BOOL)doubleClickMinimizesWindow {
- return YES;
-}
-
-// We accept first mouse so clicks onto close/zoom/miniaturize buttons and
-// title bar double-clicks are properly detected even when the window is in the
-// background.
-- (BOOL)acceptsFirstMouse:(NSEvent*)event {
- return YES;
-}
-
-// Trap double-clicks and make them miniaturize the browser window.
-- (void)mouseUp:(NSEvent*)event {
- // Bail early if double-clicks are disabled.
- if (![self doubleClickMinimizesWindow]) {
- [super mouseUp:event];
- return;
- }
-
- NSInteger clickCount = [event clickCount];
- NSTimeInterval timestamp = [event timestamp];
-
- // Double-clicks on Zoom/Close/Mininiaturize buttons shouldn't cause
- // miniaturization. For those, we miss the first click but get the second
- // (with clickCount == 2!). We thus check that we got a first click shortly
- // before (measured up-to-up) a double-click. Cocoa doesn't have a documented
- // way of getting the proper interval (= (double-click-threshold) +
- // (drag-threshold); the former is Carbon GetDblTime()/60.0 or
- // com.apple.mouse.doubleClickThreshold [undocumented]). So we hard-code
- // "short" as 0.8 seconds. (Measuring up-to-up isn't enough to properly
- // detect double-clicks, but we're actually using Cocoa for that.)
- if (clickCount == 2 && (timestamp - lastMouseUp_) < 0.8) {
- if (base::mac::ShouldWindowsMiniaturizeOnDoubleClick())
- [[self window] performMiniaturize:self];
- } else {
- [super mouseUp:event];
- }
-
- // If clickCount is 0, the drag threshold was passed.
- lastMouseUp_ = (clickCount == 1) ? timestamp : -1000.0;
-}
-
-// (URLDropTarget protocol)
-- (id<URLDropTargetController>)urlDropController {
- BrowserWindowController* windowController = [[self window] windowController];
- DCHECK([windowController isKindOfClass:[BrowserWindowController class]]);
- return [windowController tabStripController];
-}
-
-// (URLDropTarget protocol)
-- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender {
- return [dropHandler_ draggingEntered:sender];
-}
-
-// (URLDropTarget protocol)
-- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender {
- return [dropHandler_ draggingUpdated:sender];
-}
-
-// (URLDropTarget protocol)
-- (void)draggingExited:(id<NSDraggingInfo>)sender {
- return [dropHandler_ draggingExited:sender];
-}
-
-// (URLDropTarget protocol)
-- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
- return [dropHandler_ performDragOperation:sender];
-}
-
-- (BOOL)accessibilityIsIgnored {
- return NO;
-}
-
-- (id)accessibilityAttributeValue:(NSString*)attribute {
- if ([attribute isEqual:NSAccessibilityRoleAttribute])
- return NSAccessibilityGroupRole;
-
- return [super accessibilityAttributeValue:attribute];
-}
-
-- (ViewID)viewID {
- return VIEW_ID_TAB_STRIP;
-}
-
-@end
« no previous file with comments | « chrome/browser/ui/cocoa/tab_strip_view.h ('k') | chrome/browser/ui/cocoa/tab_strip_view_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698