diff options
Diffstat (limited to 'chrome/browser/cocoa/tab_view.mm')
-rw-r--r-- | chrome/browser/cocoa/tab_view.mm | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/tab_view.mm b/chrome/browser/cocoa/tab_view.mm new file mode 100644 index 0000000..ffca1de --- /dev/null +++ b/chrome/browser/cocoa/tab_view.mm @@ -0,0 +1,50 @@ +// Copyright (c) 2009 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. + +#include "chrome/browser/cocoa/tab_view.h" + +@implementation TabView + +- (id)initWithFrame:(NSRect)frame { + self = [super initWithFrame:frame]; + if (self) { + // TODO(alcor): register for theming, either here or the cell + // [self gtm_registerForThemeNotifications]; + } + return self; +} + +- (void)dealloc { + // [self gtm_unregisterForThemeNotifications]; + [super dealloc]; +} + +// Overridden so that mouse clicks come to this view (the parent of the +// hierarchy) first. We want to handle clicks and drags in this class and +// leave the background button for display purposes only. +- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent { + return YES; +} + +// Determines which view a click in our frame actually hit. It's always this +// view, never a child. +// TODO(alcor): Figure out what to do with the close button. Are we using a +// NSButton for it, or drawing it ourselves with a cell? +- (NSView *)hitTest:(NSPoint)aPoint { + if (NSPointInRect(aPoint, [self frame])) return self; + return nil; +} + +// Handle clicks and drags in this button. We get here because we have +// overridden acceptsFirstMouse: and the click is within our bounds. +- (void)mouseDown:(NSEvent *)theEvent { + // fire the action to select the tab + if ([[controller_ target] respondsToSelector:[controller_ action]]) + [[controller_ target] performSelector:[controller_ action] + withObject:self]; + + // TODO(alcor): handle dragging... +} + +@end |